Criptografia no Delphi.
A pergunta é: Como guardar informações criptografadas no banco? Uso Ib6. Ou seja, eu criei, com ajuda de um livro, uma forma de criptografar textos de um memo, edit e etc... Só q, quando eu posto no banco, a msg pode ser lida de dentro do banco, e é o q eu não queria, ou seja, gostaria que ficasse guardada criptografada, póis se alguém abrisse o banco com um utilitário externo q não fosse o sistema, seria impossível a leitura dos mesmos. Eu vi isso num software de cobrança q o Bradesco disponibiliza para seus clientes, principalmente as tabelas de senha e etc... Como proceder?
Paulo
Curtidas 0
Respostas
Daaneto
02/08/2003
Algo que é interessante de se pensar é que se você tiver uma função que gere uma senha única para um valor dado, você poderia armazenar esta senha normalmente no banco de dados, qualquer que seja ele.
Para saber se o usuário digitou a senha correta, seria aplicado o algoritmo que gera a senha à string fornecida e comparado o resultado com a senha armazenada no banco.
Se forem iguais, estará correta a senha, senão....
Espero não ter complicado demais.
Para saber se o usuário digitou a senha correta, seria aplicado o algoritmo que gera a senha à string fornecida e comparado o resultado com a senha armazenada no banco.
Se forem iguais, estará correta a senha, senão....
Espero não ter complicado demais.
GOSTEI 0
Werlon Goulart
02/08/2003
Ai vai uma rotina pra criptografar usando XOR.
Um Abraço
Werlon Goulart
//Criptografa e Descriptografa Textos (Senhas).
function Encrypt( Senha:String ): String;
Const
Chave : String = ´Jesus´;
Var
x,y : Integer;
NovaSenha : String;
begin
for x := 1 to Length( Chave ) do begin
NovaSenha := ´´;
for y := 1 to Length( Senha ) do
NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(Senha[y])));
Senha := NovaSenha;
end;
result := Senha;
end;
Um Abraço
Werlon Goulart
//Criptografa e Descriptografa Textos (Senhas).
function Encrypt( Senha:String ): String;
Const
Chave : String = ´Jesus´;
Var
x,y : Integer;
NovaSenha : String;
begin
for x := 1 to Length( Chave ) do begin
NovaSenha := ´´;
for y := 1 to Length( Senha ) do
NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(Senha[y])));
Senha := NovaSenha;
end;
result := Senha;
end;
GOSTEI 0
Cebikyn
02/08/2003
Só um detalhe:
Criptografia usando XOR é uma das mais fáceis de serem quebradas...
Criptografia usando XOR é uma das mais fáceis de serem quebradas...
GOSTEI 0
Werlon Goulart
02/08/2003
É verdade, concordo com vc, pois o metodo é conhecido de todos...
Mas o quanto a criptografia do seu sistema é importante ??? Se vc esta ocultando dados super secretos use criptografia de 1024 bits, se esta apenas tentando dificultar (NENHUM metodo é 100¬ seguro...) a entrada no seu sistema pode usar o XOR que é facil de implementar e manter.
No mais se seus dados forem tão importantes e secretos assim pense em adotar rotinas bem mais poderosas q uma simples criptografacao de senhas de acesso dos usuarios do banco (Firewall e tudo mais.)
Um abraço
Werlon Goulart
Mas o quanto a criptografia do seu sistema é importante ??? Se vc esta ocultando dados super secretos use criptografia de 1024 bits, se esta apenas tentando dificultar (NENHUM metodo é 100¬ seguro...) a entrada no seu sistema pode usar o XOR que é facil de implementar e manter.
No mais se seus dados forem tão importantes e secretos assim pense em adotar rotinas bem mais poderosas q uma simples criptografacao de senhas de acesso dos usuarios do banco (Firewall e tudo mais.)
Um abraço
Werlon Goulart
GOSTEI 0
Imstaff
02/08/2003
A solução fazer o oposto que você está fazendo, ou seja, postar os dados criptografados. Para recuperar você usa o algorítimo ´invertido´ para descriptografar os dados que você quiser.
GOSTEI 0
Paulo
02/08/2003
A questão não é uma criptografia muito complexa, mas sim se o usuário abrir o banco pelo IBConsole, e ler as tabelas, ele não possa entender nada, pois os dados devem estar criptografados dentro das tabelas, ele só será possível ler através da aplicação, é isso o q eu quero. Vou tentar usar pelo método XOR, para ver se é isto o q eu quero, mesmo assim agradeço a todas. Eu vi isso numa tabela em paradox, pois qdo eu abri o DataBase Desktop, estava assim as tabelas:
$@3¬;*&¨?&:3&6 e etc.. e é isso q eu quero.
$@3¬;*&¨?&:3&6 e etc.. e é isso q eu quero.
GOSTEI 0
Werlon Goulart
02/08/2003
Esta rotina funciona indo e vindo... quer dizer serve pra criptografar e Descriptografar... Tudo numa mesma rotina...
Altere a chave ´Jesus´ pra uma de seu gosto.... Mas teste antes de usar a chave nova definitivamente.... Algumas com numeros e caracteres especiais podem apresentar problemas.
Um Abraço
Werlon Goulart
//Criptografa e Descriptografa Textos (Senhas).
function Encrypt( Senha:String ): String;
Const
Chave : String = ´Jesus´;
Var
x,y : Integer;
NovaSenha : String;
begin
for x := 1 to Length( Chave ) do begin
NovaSenha := ´´;
for y := 1 to Length( Senha ) do
NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(Senha[y])));
Senha := NovaSenha;
end;
result := Senha;
end;
Altere a chave ´Jesus´ pra uma de seu gosto.... Mas teste antes de usar a chave nova definitivamente.... Algumas com numeros e caracteres especiais podem apresentar problemas.
Um Abraço
Werlon Goulart
//Criptografa e Descriptografa Textos (Senhas).
function Encrypt( Senha:String ): String;
Const
Chave : String = ´Jesus´;
Var
x,y : Integer;
NovaSenha : String;
begin
for x := 1 to Length( Chave ) do begin
NovaSenha := ´´;
for y := 1 to Length( Senha ) do
NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(Senha[y])));
Senha := NovaSenha;
end;
result := Senha;
end;
GOSTEI 0
Lipsil
02/08/2003
Oi!
como que seria feito para dar um showmessage no formcreate mostrando como ficaria esta senha?
Valew
como que seria feito para dar um showmessage no formcreate mostrando como ficaria esta senha?
Valew
GOSTEI 0
Rodolpho123
02/08/2003
Bem, lendo algumas mensagens acima, vi uma parte que ´nenhum método é eficaz na criptografia´. Bem, pelo menos eu entendi assim, mas existe um método que, teoricamente é IMPOSSÍVEL de ser descoberta, a cripitografia de Vernan, que utiliza uma chave e um operador OR, que, em outras palavras, É REALMENTE IMPOSSÍVEL DE SER DESCOBERTA. No momento, snão sei tudo sobre esta técnica, mas vou estudar mais e repassar para os amigos do fórum....
Valeu!!!
Valeu!!!
GOSTEI 0