Encriptar cadenas utilizando MD5, SHA o SHA1 en SQL Server

SQL Server encrypt

SQL Server encrypt

Nunca he sido muy amigo del motor de base de datos de microsoft.. MS SQL Server no es mi opción a elegir, pero la mayoría de las veces que trabajamos con la plataforma de .NET es casi un requisito forzoso tener que utilizarlo.

En este artículo escribiré un poco sobre como utilizar los métodos para encriptar cadenas utilizando MD5, SHA o SHA1 .. la verdad es que comparado con los otros motores de BD que conozco.. MS SQL Server es uno de los más feos para aplicar.. pero igualmente funcional.

Entonces el ejemplo para complementar de lo que hablo, va de la siguiente manera:

SELECT HashBytes('MD5','qbit.com.mx')
SELECT HashBytes('SHA','qbit.com.mx')
SELECT HashBytes('SHA1','qbit.com.mx')

Ahora, el problema común de utilizar este método es que retorna un tipo de dato VarBinary en lugar de VarChar por lo que para obtener la cadena correcta se necesita hacer una substracción de la parte que nos interesa.. y ello implica utilizar la función SUBSTRING…

SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'qbit.com.mx'), 3, 32) AS MD5
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA', 'qbit.com.mx'), 3, 40) AS SHA
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA1', 'qbit.com.mx'), 3, 40) AS SHA1

Como verán si utilizo solamente la conversión SUBSTRING(HashBytes(‘MD5′,’qbit.com.mx’), 3,32) no extrae la cadena necesaria de forma correcta.. y es por esa razón que se necesita utilizar master.dbo.fn_varbintohexstr() .. para mi inquietud la función varbintohexstr no esta documentada así es que no estoy seguro del porque usarla 🙁

Estas funciones las he probado en el motor 9 de SQL Server .. en un par de días más lo estaré probando con versiones recientes y actualizaré este artículo..

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Facebook Twitter LinkedIn Google+ Flickr YouTube Skype 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook0