post icon

Encriptar contraseñas en SQL Server

Para muchas cosas podriamos necesitar encriptar datos dentro de la base de datos, y uno de los usos más comunes es para almacenar contraseñas. SQL Server desde versiones antiguas soportaba ya esta función integrada.

Anteriormente podiamos encriptar y desencriptar con las funciones públicas PWDENCRYPT y PWDCOMPARE, incluso hasta hoy día podemos utilizar éstas funciones aunque no les recomiendo ya su uso por varios motivos, en casi cada versión de sql server se cambia el algoritmo de encriptado y al realizar migraciones se deben hacer ajustes para que funcionen con el nuevo algoritmo, aunque por suerte nuestra a partir de la versión 2005 ya dentro del blob se trae la versión correspondiente, otra desventaja es que en versiones futuras se planea su eliminación.

Por ello recomiendo la nueva funcion HASHBYTES() el cual permite especificar que algoritmos serán usados, entre ellos están los más modernos en cuanto a seguridad se refiere.

  1. MD2
  2. MD4
  3. MD5
  4. SHA
  5. SHA1
  6. SHA2_256
  7. SHA2_512

Para cifrar solo debemos utilizarlo así

SELECT HASHBYTES('SHA1', 'Devtroce.com');
-- o bien así
INSERT INTO SEGURIDAD VALUES HASHBYTES('SHA1', 'Devtroce.com');

Y para compararlo en caso de los login algo asi


IF (SELECT HASHBYTES('SHA1', 'Devtroce.com') = (SELECT COLUMNA FROM SEGURIDAD WHERE ID=1)
BEGIN
PRINT 'CORRECTO';
END
ELSE
BEGIN
PRINT 'INCORRECTO';
END

Comentarios desde Facebook:

Sin Comentarios aun, puedes tú ser el primero en comentar!

Deja tu Comentario

Responder