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

Por - novembro 13, 2009

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

VOCÊ PODE GOSTAR

2 comments

  1. Valeu, amigo. Funciona perfeitamente.

    ResponderExcluir
  2. Aee deu bom! Por essas e outras que sou a favor dos blogs e antigos foruns. Muitas vezes a gente precisa fazer coisas que não fazemos a muito tempo e achamos as respostas em posts de blogs e foruns, algumas vezes já achei respostas para o que eu queria em coisas que eu mesmo postei no passado rs

    ResponderExcluir