57 lines
1.3 KiB
PHP
57 lines
1.3 KiB
PHP
<?php
|
|
|
|
function encryptData($data) {
|
|
|
|
// Genera una clave de 256 bits a partir de APP_KEY (hash SHA-256)
|
|
|
|
$key = hash('sha256', APP_KEY);
|
|
|
|
// IV (Initialization Vector):
|
|
// valor aleatorio necesario para el cifrado CBC
|
|
// debe ser único por cada encriptación (16 bytes para AES)
|
|
|
|
$iv = random_bytes(16);
|
|
|
|
// Encripta los datos usando AES-256-CBC
|
|
|
|
$encrypted = openssl_encrypt(
|
|
$data, // dato original
|
|
'AES-256-CBC', // algoritmo de cifrado
|
|
$key, // clave derivada
|
|
0, // opciones (0 = salida base64 por defecto)
|
|
$iv // vector de inicialización
|
|
);
|
|
|
|
// Se concatena IV + dato encriptado y se codifica en base64 para poder almacenarlo o transportarlo como string
|
|
|
|
return base64_encode($iv . $encrypted);
|
|
}
|
|
|
|
function decryptData($data) {
|
|
|
|
// Regenera la misma clave usada en el cifrado
|
|
|
|
$key = hash('sha256', APP_KEY);
|
|
|
|
// Decodifica el string base64
|
|
|
|
$data = base64_decode($data);
|
|
|
|
// Extrae el IV (primeros 16 bytes)
|
|
|
|
$iv = substr($data, 0, 16);
|
|
|
|
// Extrae el contenido cifrado
|
|
|
|
$encrypted = substr($data, 16);
|
|
|
|
// Desencripta el contenido usando los mismos parámetros
|
|
|
|
return openssl_decrypt(
|
|
$encrypted,
|
|
'AES-256-CBC',
|
|
$key,
|
|
0,
|
|
$iv
|
|
);
|
|
} |