27 de dezembro de 2005

Hash...

Alocado em um projeto de software, acompanhando os estudos sobre hash e a possibilidade de colisões em Sha-1 e Md5 como o Anchises retratou em "O Hash subiu no telhado" fui dar uma "googlada" e encontrei bastante coisa sobre implementação de hash usando Sha-256. A performance é um caso a ser pensado, mais como diria Augusto Celebridade Paes de Barros, "Não é interessante ter um hash muito performatico, você fica mais suscetível a força bruta".

Exemplos de implementação em diversas linguagens.

Sha-256 para implementar em java
http://elvin.dstc.com/projects/je4/api/org/elvin/util/SHA256.html

Sha-256 para implementar em .net
http://msdn.microsoft.com/library/default.asp?url=/library/
en-us/cpref/html/frlrfsystemsecuritycryptographysha256classtopic.asp


Sha-256 para implementar em delphi
http://www.cityinthesky.co.uk/cryptography.html

Sha-256 para implementar em perl
http://rpmfind.net/linux/RPM/sourceforge/p/pe/perl-strip/
perl-Digest-SHA256-0.01b-1.i386.html

Uma biblioteca que implementa vários tipos de hash em diversas linguagens
http://www.slavasoft.com/quickhash/

Várias informações sobre implementação de Diffie-Hellman, RSA, hash em diversas linguagens
http://www.di-mgt.com.au/crypto.html

As vezes é interessante implementar criptografia, hash no banco, eu encontrei o XP_CRYPT_GUI para Sql Server, me pareceu muito interessante.

XP_CRYPT_GUI
http://www.xpcrypt.com/xpho/xpcrypt_help1.htm

2 comentários:

Augusto Barros disse...

Ops...Wagner, não ter um hash muito rápido é algo importante para situações como autenticação por senhas, que era o que estavamos discutindo naquela ocasião. Agora há vários casos onde performance é importante. Imagine uma VPN que adiciona uma assinatura digital para cada pacote (AH do IPSEC, por exemplo). Uma função hash de baixa performance pode inviabilizar o funcionamento.

Wagner Elias disse...

Corretissimo mestre...Eu tinha pensado somente em autenticação de senhas...