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
2 comments
Valeu, amigo. Funciona perfeitamente.
ResponderExcluirAee 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