Files
ByteCenter/app/helpers/crypto.php
T
2026-08-04 19:21:38 -03:00

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
);
}