Página 1 de 1
HB_Base64Encode(): funcão e exemplos
Enviado: 09 Dez 2010 19:35
por Maya Fiuza
Olá Fórum!
Um cliente pede para cifrar todos os dados de 3 tabelas (diversos campos numéricos, strings e data).
Alguém teria um exemplo de uso da HB_Base64Encode() ou de outra função [x]Harbour. Não quero usar LIBs de terceiros.
Obrigada.
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 09 Dez 2010 19:46
por Maligno
Base64 não é utilizado em criptografia. É um método utilizado para codificar conjuntos de dados por meio de uma tabela fixa de 64 caracteres (RFC989). É muito utilizado para transporte de arquivos (principalmente binários) em clientes de correio. Aliás, pode-se dizer que é o primo "rico" do UUEncode.
Para criptografia você terá de utilizar outro recurso. Talvez possa criar o seu próprio algoritmo. Não é tão complexo.
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 10 Dez 2010 11:34
por anacatacombs
A mais comum, é por substituição. Por exemplo, a letra A corresponde a "Z".
Realmente não é complexo, no entanto, é preciso elaborar um algoritmo mais complexo para dificultar a quebra da criptografia.
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 10 Dez 2010 13:51
por Maya Fiuza
Então... Uma tabela tem 987.000 registros/24 colunas, outra 512.00 reg/4 col e outra varia de 200.000 a 800.000 reg /56 col.
Preciso deixar cifradas, e apenas o app ler e add cifrado. Estou receosa de que uma UDF não escrita em assembler ou C, sacrifique a velocidade.
Lendo alguns tópicos, tentei usar a SIX (parece ter este propósito), mas não consegui. Alguém poderia postar um curto exemplo da HBsix?
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 10 Dez 2010 15:31
por Maligno
Estou receosa de que uma UDF não escrita em assembler ou C, sacrifique a velocidade.
Pelas quantidades que citou, sua preocupação faz todo sentido.
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 10 Dez 2010 18:20
por rochinha
Amiguinha,
Sua preocupacao é manter sigilosos os dados dos registros somente, sem mexer na estrutura.
Bom, no meu caso, eu uso a criptografia do conteudo em tempo de execução, ou seja, quando o sistema pega os dados do registro, identifica se o mesmo esta criptografado e desgrafa, mostra nas telas e permite alteração, grafando novamente ao salvar o registro.
Neste tópico apresento uma solução totalmente livre de terceiros.
Analise, modifique, melhore e use.
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 10 Dez 2010 19:07
por Toledo
Dê uma olhada neste exemplo:
Código: Selecionar todos
#include "dbinfo.ch"
procedure main()
local aStruct := { ;
{ "Nome", "C", 30, 0 }, ;
{ "Endereco", "c", 25, 0 }, ;
{ "Niver", "D", 8, 0 } ;
}
Set Century On
Set Date To British
request dbfcdx
rddsetdefault("DBFCDX")
if !file("teste.dbf")
dbcreate("teste", aStruct)
use teste
teste->( dbappend() )
teste->nome := "Paulo Cesar Toledo"
teste->Endereco := "Rua Afonso Pena, 1277"
teste->niver := ctod("29/05/1962")
teste->( dbappend() )
teste->nome := "Maya Fiuza"
teste->Endereco := "Rua dos Maias, 1122"
teste->niver := ctod("10/12/1985")
else
use teste
endif
go top
//Encrypta os registros atraves de uma senha
teste->( dbinfo( DBI_ENCRYPT,"pctoledo" ) )
go top
Browse()
teste->( dbclosearea() ) //fecha o arquivo
//Abre o arquivo, mas os registro estao encryptados
use teste
Browse()
//informando a senha correta, os registro podem ser vistos corretamente
teste->( dbinfo( DBI_PASSWORD, "pctoledo" ) )
Browse()
teste->( dbclosearea() )
return
Utilizei o Harbour 2.1.
Abraços,
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 13 Dez 2010 14:53
por Maya Fiuza
Olá, fico agradecida por todos os exemplos!
Toledo, mais uma vez sua indicação foi fantástica, caiu como uma luva! Novamente, muito grata.
Em tempo: existe algum manual do Harbour 2.0?
Onde posso obter uma descrição detalhada (qualquer idioma) das novas funções do Harbour?
Queria ver mais detalhes da DbInfo( )...
Re: HB_Base64Encode(): funcão e exemplos
Enviado: 13 Dez 2010 16:13
por Toledo
Maya, dê uma olhada neste link, acho que já ajuda:
Procure em "Functions"/"Functions by name"
http://www.oohg.org/manual/harbour/
Para mais detalhes sobre os parâmetros desta função (DBINFO), veja o arquivo dbinfo.ch na pasta \INCLUDE do seu Harbour.
Abraços,