Ir para conteúdo
  • Cadastre-se

dev botao

Criptografia de senha com SALT


Ver Solução Respondido por datilas,
  • Este tópico foi criado há 573 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá a todos,

Tenho um projeto em Delphi onde eu criptografo a senha em MD5 e armazeno no banco, depois eu descriptografo e leio a senha.

Mas se alguém tiver acesso ao banco e executar uma função de descriptografia MD5, assim como eu, terá acesso a senha.

O Delphi tem algum tipo de criptografia com SALT? Uso isso em JS e resolve essa questão, pois o SALT ficaria gravado no código do executável e ninguém teria acesso, e sem o mesmo só a senha criptografada o banco seria inútil.

Desde já agradeço a atenção

Editado por bnobre
Link para o comentário
Compartilhar em outros sites

2 horas atrás, bnobre disse:

Olá a todos,

Tenho um projeto em Delphi onde eu criptografo a senha em MD5 e armazeno no banco, depois eu descriptografo e leio a senha.

Mas se alguém tiver acesso ao banco e executar uma função de descriptografia MD5, assim como eu, terá acesso a senha.

O Delphi tem algum tipo de criptografia com SALT? Uso isso em JS e resolve essa questão, pois o SALT ficaria gravado no código do executável e ninguém teria acesso, e sem o mesmo só a senha criptografada o banco seria inútil.

Desde já agradeço a atenção

md5 é uma criptografia "só de ida" a única coisa que vc pode fazer é comparação.

para descriptografar seria preciso o uso de brute force.

sabendo disso...

funciona com delphi e lazarus.

https://github.com/viniciussanchez/bcrypt

Editado por datilas
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
37 minutos atrás, datilas disse:

md5 é uma criptografia "só de ida" a única coisa que vc pode fazer é comparação.

para descriptografar seria preciso o uso de brute force.

sabendo disso...

funciona com delphi e lazarus.

https://github.com/viniciussanchez/bcrypt

Oi @datilas, tudo bom?

Sua explicação sobre o MD5 está correta, portanto com o acesso ao HASH completo (que foi gravado no banco) o invasor pode através de um ataque de força bruta descobrir.

Já com o SALT, se eu não estiver falando besteira, eu não teria o HASH completo no banco, teria uma parte lá e o SALT no meu código fonte, e só com os 2 eu teria o HASH completo, então para isso o invasor teria que descobrir o SALT no meu código.

Esse bcrypt usa esse conceito de SALT?

Link para o comentário
Compartilhar em outros sites

30 minutos atrás, bnobre disse:

Oi @datilas, tudo bom?

Sua explicação sobre o MD5 está correta, portanto com o acesso ao HASH completo (que foi gravado no banco) o invasor pode através de um ataque de força bruta descobrir.

Já com o SALT, se eu não estiver falando besteira, eu não teria o HASH completo no banco, teria uma parte lá e o SALT no meu código fonte, e só com os 2 eu teria o HASH completo, então para isso o invasor teria que descobrir o SALT no meu código.

Esse bcrypt usa esse conceito de SALT?

usa sim.

da uma lida aki:

https://vinicius-sanchez.medium.com/proteja-suas-senhas-com-seguran%C3%A7a-utilizando-o-bcrypt-9d8379860f06

Editado por datilas
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
38 minutos atrás, datilas disse:

Dei uma conferida aqui, mas não é isso que eu estava pensando.

O que eu queria é especificar por exemplo:

1 - Tenho uma senha "teste123" e um SALT "F881mwZnJ&29".

2 - Com os dados acima o sistema geraria uma criptografia e eu armazenaria no banco.

3 - Depois eu quero pegar esse conteúdo no banco e descriptografar (e não apenas comparar como no caso do MD5 ou do BCrypt)

4 - Sendo que para essa descriptografia eu precisaria, além da senha criptografada que está no banco, também do SALT que estaria no código do meu executável.

Link para o comentário
Compartilhar em outros sites

funcao.zip

eu uso a função acima. vc pode adaptar para sua necessidade.

ela tem um problema quando o texto tem #13 ou #10 ou #13#10

fora isso funciona do jeito que vc precisa

tive que postar como zip

pois não estava aceitando como texto.

por isso demorei para responder.

 

Editado por datilas
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Em 30/09/2022 at 17:27, datilas disse:

funcao.zip 824 B · 0 downloads

eu uso a função acima. vc pode adaptar para sua necessidade.

ela tem um problema quando o texto tem #13 ou #10 ou #13#10

fora isso funciona do jeito que vc precisa

tive que postar como zip

pois não estava aceitando como texto.

por isso demorei para responder.

 

É exatamente isso que preciso, mas por algum motivo ficou acrescentando um caracter ao final na hora de descriptografar, conforme em anexo. Sabe porque?

E outra dúvida, essa seria sobre Delphi... o que significa o trecho abaixo e onde é o local correto para colocá-lo no código (coloquei antes do implementation):

Type
 TTipoCript = (tcCript, tcDecript);

Desde já agradeço as discas

 

Editado por bnobre
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
2 horas atrás, datilas disse:

é só um type que eu criei.

vc pode alterar a função como vc quiser

Então... Me desculpe a ignorância, mas o que seria um TYPE? Se souber de algum texto que possa me explicar eu te agradeço.

E conseguiu ver a questão do caractere que aparece no final? Esqueci de anexar a imagem... Segue anexo.

 

Ah... O nome são tipo enumerados, achei aqui ;-)

https://drgarcia1986.wordpress.com/2011/12/07/tipos-enumerados-em-delphi/

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
21 minutos atrás, datilas disse:

 

aqui esta funcionando perfeitamente.

mas estou enviando um demo em delphi.

154289363_Semttulo.png.0fe8b8784f25f849037ac566a4172110.png

 

funcao.zip 25 kB · 1 download

 

Descobri o que era... No meu exemplo estava pegando o valor para descriptografar de um Memo, e não de um Edit conforme você fez... Se pegar de um Memo (Memo1.Text) o valor criptografado e tentar descriptografar, tu vai ter o mesmo problema que eu...

Estranho...

Mas era isso mesmo que precisa... Valeu mesmo

Pena que o Delphi não tem algo assim nativo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 573 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.