Cómo guardar información encriptada en una base de datos SQL Server
Profundizar en T-SQL te hará pasar de desarrollador promedio a un pro ✌️💡

En este corto pero muy interesante post vamos a aprender cómo guardar un usuario y contraseña en SQL Server, por supuesto, podrías utilizar esta forma de registrar la información para el propósito que quieras, aquí usaré el ejemplo de usuario y contraseña porque es el más sencillo de entender y el más común. Empecemos devs!

A codear en T-SQL!

Primero creamos la tabla con sus dos campos:

CREATE TABLE USUARIO (
 usuario VARCHAR(50),
 pwd VARBINARY(128)
)

Ahora para insertar un registro puedes hacerlo así:

DECLARE @pswd NVARCHAR(MAX) = 'TuPassword';
DECLARE @salt VARBINARY(4) = CRYPT_GEN_RANDOM(4);
DECLARE @hash VARBINARY(MAX);
SET @hash = 0x0200 + @salt + HASHBYTES('SHA2_512', CAST(@pswd AS VARBINARY(MAX)) + @salt);

INSERT INTO USUARIO VALUES ('user2', @hash)

Hasta este momento has insertado un registro nuevo con la contraseña: "TuPassword" pero guardada de forma encriptada, con el algoritmo de encriptación SHA 512.

Si haces un select podrás obtener algo así:

SHA 512 es irreversible, lo que quiere decir que no se puede obtener el texto inicial a partir del texto encriptado, a esto también se le conoce como cifrado unidireccional.

Entonces para validar la contraseña necesitarás comparar la contraseña con el valor del hash así:

SELECT COUNT(*) as 'Match?' FROM USUARIO AS u
WHERE u.usuario='user2'
AND PWDCOMPARE('TuPassword',u.pwd)>=1

Ejecútalo en tu base de datos y pruébalo por ti mismo 🐿️

Pues ya lo tienes crack, aprovecha este conocimiento y compártelo con toda tu red ✌️💪

Créditos imagen de portada: Foto de Hana en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *