PantaNet

Usando MD5 nativamente pelo SQLServer (função HASHBYTES)

Olá pessoal,
Trabalhando com desenvolvimento de sistemas sempre temos a área segura do site que normalmente é acessada com login e senha. Que tal armazenar essa senha criptografada em MD5 no banco de dados SQL Server utilizando um recurso do banco para gerar o hash?
Então, vou postar mais uma função útil para podermos utilizar.

É a função HASHBYTES que pode ser utilizada da seguinte maneira:

SELECT HASHBYTES('MD5', 'minhaSenha')

Ela deverá retornar o valor de “minhaSenha” em MD5 assim:0x25EEF25B04B2113A23697A1E81453201
No entando ela retornará um tipo de dado que não poderiamos utilizar para comparação, pois, salva com caracteres estranhos no banco dificutando o uso dela diretamente. Para resolver isso podemos utilizar uma função adicional para retornar o hash igual ao gerado pelo ASP, PHP, JAVA etc...
Então uma forma tranquila de utiliza-la é assim:

SELECT SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', 'minhaSenha')),3,32)

Dessa forma ela retornará o valor de “minhaSenha” em MD5 assim: 25eef25b04b2113a23697a1e81453201 já sendo uma string.
A função HASHBYTES só esta disponível no SQLServer apartir da versão 2005, não tendo o mesmo em versões anteriores sendo necessário recursos de terceiros para obtermos o mesmo resultado. Essa função permite gerar outros tipos de Hash com criptografias diferentes (MD2, MD4, SHA, ou SHA1).

Mais informações em: http://msdn.microsoft.com/en-us/library/ms174415.aspx

Exibições: 1279

Comentário de Sara Jardim Barbosa em 10 novembro 2009 às 17:08
Bacana o post. Realmente segurança hoje deve ser levada em consideração, nada melhor que usar criptografia para isso. Parabéns pelo post.
Comentário de Alessandro Gonzalez em 10 novembro 2009 às 22:37
Obrigado Sara, e com certeza deve ser levado muito a sério esse quesito. Este post foi uma pequena prática que pode ser utilizada tranquilamente, pois, é compativel sem grandes dificuldades em várias linguagens de programação.
Comentário de danielsilva1986 em 26 agosto 2011 às 11:57
Certo, vc mostrou como consultar um dado “MD5″ no SQL SERVER só que esqueceu do principal, para CRIAR a tabela de login e senha qual TIPO de dados (varchar,text,nvarchar,int etc) foi usado para se obter uma criptografia tipo “MD5″ ?
Até mais.
Comentário de Alessandro Gonzalez em 26 agosto 2011 às 17:28

O campo em sua base de dados pode ser do tipo "varchar", pois o conteúdo gerado é texto simples contendo 32 posições sempre.

 

Até mais.

Comentário de danielsilva1986 em 30 agosto 2011 às 9:33
Tenho SQL 2000 creio que essa função não irá funcionar.

Comentar

Você precisa ser um membro de PantaNet para adicionar comentários!

Entrar em PantaNet

Fotos

Carregando...
  • Adicionar fotos
  • Exibir todos

Apoio





 

© 2012   Criado por Gustavo Malheiros.

Badges  |  Relatar um incidente  |  Termos de serviço