Encriptar datos de PAN (Personal Account Number) o número de tarjeta
2 min readJul 29, 2024
Toda entidad financiera debe enmascarar o encriptar datos sensibles. Los datos de las tarjetas son considerados sensibles, específicamente el PAN (Personal Account Number)o número de tarjeta en la mayoría de caso no se encuentra enmascarado o encriptado lo que supone un riesgo de seguridad.
Para ello se procedió a realizar una prueba de concepto para la encriptación de los datos de la tarjeta de crédito.
Pasos
- Para la encriptación en MySQL se usó el algoritmo AES (Advanced Encryption Standard) el cual tiene dos funciones: AES_ENCRYPT(str_dato,str_llave) y AES_DECRYPT (str_dato,str_llave). Ambas funciones reciben como parámetros la cadena a encriptar y la llava para encriptar.
- Se debe generar la llave para la encriptación. Recomendable usar llaves de 256 bits o 32 bytes para una seguridad robusta. Esta llave se puede generar en linux, con librerias en python o con php. Para este caso se usó linux online con el siguiente comando.
openssl rand -hex 32
3. Realizar las inserciones en la tabla “tarjetas”
-- encriptar toda la tarjeta
INSERT INTO tarjetas VALUES (3,'110-2-987898763',AES_ENCRYPT('4567889100901212','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))
INSERT INTO tarjetas VALUES (4,'110-2-987898764',AES_ENCRYPT('4567889100901213','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))
INSERT INTO tarjetas VALUES (5,'110-2-987898765',AES_ENCRYPT('4567889100901214','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))
INSERT INTO tarjetas VALUES (6,'110-2-987898766',AES_ENCRYPT('4567889100901215','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))
4. Consulta para mostrar los datos
SELECT
id,
cuenta,
tarjeta as PAN_ENCRYPTADO,
AES_DECRYPT(tarjeta,'f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a') as PAN_EN_CLARO,
CONCAT("**** **** **** ",SUBSTRING(AES_DECRYPT(tarjeta,'f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'),-4)) as PAN_LAST_DIGITS
FROM tarjetas
5. Visualización de datos