37. Funciones de encriptación y desencriptación

En este capítulo vamos a ver algunas funciones que sirven para el proceso de encriptación de información. Casos útiles son el almacenaje de las passwords. En SQL tenemos diferentes funciones.

Función MD5()

Esta función convierte una cadena de texto a un valor de tipo hash de 128 bits. Su sintaxis es.

Ejm

MD5('mipasswd');

Función SHA1()

Es un mecanismo mas seguro que MD5(). Tiene una extensión de hasta 160 bits. Su sintaxis es.

Ejm

SHA1('mipasswd')

Función SHA2()

Permite indicar el número de bits que va a formar el hash. A mayor número de bits se vuelve más difícil de hackear. Es el mecanismo más popular.

Ejm

SHA2('passwd',256);

Función AES_ENCRYPT()

Esta función es como si tuviéramos un factor de doble autenticación, donde aparte de poner la contraseña nos llega un código por mensaje a nuestro teléfono o a nuestro correo electrónico. Su sintaxis es.

Ejm

AES_ENCRYPT('passwd','llave_secreta'); // Encripta
AES_DECRYPT('nombre_campo','llave_secreta'); // Desencripta

Simulado de una tarjeta de crédito

Vamos a crear un ejercicio para simular el guardado de una tarjeta de crédito.

Ejm

CREATE TABLE pagos_recurrentes(
cuenta VARCHAR(8) PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
tarjeta BLOB
);

INSERT INTO pagos_recurrentes VALUES(
('12345678','Francisco',AES_ENCRYPT('1234567890123488','12345678'),
('12345677','Beatriz',AES_ENCRYPT('1234567890123477','12345677'),
);

SELECT * FROM pagos_recurrentes;

-- Desencriptamos
SELECT CAST(AES_DECRYPT(tarjeta, '12345678')AS CHAR) AS tdc 
FROM pagos_recurrentes

Nota: para el guardado de la tarjeta, usar como tipo de dato BLOB.

Scroll al inicio