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 ✌️💪