Cifrar / Descifrar campos en SQL ENCRYPTBYPASSPHRASE: Para cifrar. DECRYPTBYPASSPHRASE: Para descifrar. Como primer paso se tiene que preparar el campo de la base de datos para que sea de tipo VARBINARY.
Cifrar / Descifrar campos en SQL Como segundo paso creamos una función escalar en SQL para poder colocar el valor cifrado. Clic derecho sobre la opción “Funciones con valores escalares” y seleccionar “Nueva función con valores escalares”.
Cifrar / Descifrar campos en SQL La función quedaría de la siguiente manera: CREATE FUNCTION [dbo].[fnColocaClave] ( @clave VARCHAR(25) ) RETURNS VarBinary(8000) AS BEGIN DECLARE @pass AS VarBinary(8000) SET @pass = ENCRYPTBYPASSPHRASE('dbCurso09',@clave) --dbCurso09 es la llave para cifrar el campo. RETURN @pass END
Cifrar / Descifrar campos en SQL Para ejecutar la función al insertar un nuevo campo a una tabla: --El campo a cifrar es contrasena y se guarda el valor 123. INSERT INTO USUARIO_CUR (nombre, apellido,email, contrasena) VALUES ('Ivan','Rangel','ir@email.com',dbo.fnColocaClave('123'))
Cifrar / Descifrar campos en SQL Si se consulta el valor del campo: SELECT id, nombre, apellidos, email, contrasena FROM USUARIO_CUR Este sería el resultado:
Cifrar / Descifrar campos en SQL El siguiente paso es crear la función para leer el campo cifrado. CREATE FUNCTION fnLeeClave ( @clave VARBINARY(8000) ) RETURNS VARCHAR(25) AS BEGIN DECLARE @pass AS VARCHAR(25) --Se descifra el campo aplicándole la misma llave con la que se cifró SET @pass = DECRYPTBYPASSPHRASE('dbCurso09',@clave) RETURN @pass END
Cifrar / Descifrar campos en SQL Por último para consultar la tabla aplicándole al campo cifrado la función: SELECT id, nombre,apellidos,email,dbo.fnLeeClave(contrasena) FROM USUARIO_CUR Este sería el resultado: