Amiguinho,
No meu caso preciso realmente criptografar alguns campos que fazem parte de chaves como NOME, ENDERECO e TELEFONE e descriptografar no momento de visualizar ou pesquisar.
Algo como:
Criptografar o campo NOME.
Indexar por este campo descriptografando no momento de enviar o comando de INDEXação.
Ao pesquisar passar o dado normalmente ja que a pesquisa ocorre primeiro no indice e depois aponta ao dbf.
Ao salvar sempre criptografar o conteudo antes.
Ao recuperar o dado para visualizar, alterar ou imprimir descriptografar.
Um processo tedioso pois é necessário cercar todos os pontos onde estes dados serão apresentados e modificados.
Comecei a testar esta implemntacao mas dei um tempo por falta do mesmo.
No caso utilizei uma função que implementei o método de Julio Cesar ou Cesar que consiste na troca de letras pela letra anterior ou posterior, que me corrijam de postei algo errado, mas postei um tópico extenso explanando estas técnicas aqui no forum. Ver este
link
Primeiro criptografei em todo o DBF o campo NOME:
Código: Selecionar todos
...
do while .not. eof()
dbRLock()
CLIENTES->NOME := MinhaEncriptadora( CLIENTES->NOME )
dbRUnLock()
dbCommit()
skip
enddo
...
Depois promovi a indexacao pelo campo NOME usando o inverso:
Para pesquisar um determinado dado:
Código: Selecionar todos
...
dbSelectArea( nArea )
ordSetfocus( nOrdem )
dbSeek( cSeekFrase, lSoftSeek )
...
Neste caso não usei nenhuma função pois o dado passado e o dado que será encontrado no indice esta descriptografado e portanto a pesquisa se efetivará com exito.
Salvar o conteudo no campo do DBF ja criptografado:
Para recuperar o conteudo do campo para vizualizar, alterar etc:
E no browse colocar a chamada ao campo criptografado usando
MinhaDecriptadora( M->NOME )
Fica ai o trabalho de verificar onde serão usados campos criptografados e usar as funções corretamente.
Vou usar este método em um módulo para testes e depois homologarei com o cliente o uso em outros módulos, inclusive farei alguns testes em campos com valores, para salvaguardar valores de produtos ou recebimentos.
A aplicabilidade de algo assim é mero segurança e não, um ponto de honra e vai depender do quanto se quer salvaguardar.
Ilustrando o post
http://www.5volution.com.br/downloads/forum/crypto.zip
Dicas e sugestões serão benvindas.