Filtros de Encripción

mcrypt.* y mdecrypt.* ofrecen encripción y desencripción simétrica usando libmcrypt. Ambos conjuntos de filtros soportan los mismos algoritmos disponibles a la extensión mcrypt en la forma de mcrypt.ciphername, en donde ciphername es el nombre del cifrado que debe ser pasado a mcrypt_module_open(). Los siguientes cinco parámetros se encuentran disponibles también:

parámetros del filtro mcrypt
Parámetro ¿Requerido? Predeterminado Ejemplos
mode Opcional cbc cbc, cfb, ecb, nofb, ofb, stream
algorithms_dir Opcional ini_get('mcrypt.algorithms_dir') Ubicación de los módulos de los algoritmos
modes_dir Opcional ini_get('mcrypt.modes_dir') Ubicación de los módulos de los modos
iv Requerido N/A Usualmente 8, 16, o 32 bytes de datos binarios. Depende del cifrado
key Requerido N/A Usualmente 8, 16, o 32 bytes de datos binarios. Depende del cifrado

Ejemplo #1 Encripción de la salida usando 3DES

<?php
$frase_secreta 
'Mi secreto';

/* Convertir una frase legible en una pareja iv/llave reproducible
 */
$iv substr(md5('iv'.$frase_secretatrue), 08);
$llave substr(md5('contrasenya1'.$frase_secretatrue) .
               
md5('contrasenya2'.$frase_secretatrue), 024);
$opciones = array('iv'=>$iv'key'=>$key);

$da fopen('archivo-secreto.enc''wb');
stream_filter_append($da'mcrypt.tripledes'STREAM_FILTER_WRITE$opciones);
fwrite($da'Datos muy muy muy secretos');
fclose($da);
?>

Ejemplo #2 Lectura de un archivo encriptado

<?php
$frase_secreta 
'Mi secreto';

/* Convertir una frase legible en una pareja iv/llave reproducible
 */
$iv substr(md5('iv'.$frase_secretatrue), 08);
$llave substr(md5('contrasenya1'.$frase_secretatrue) .
               
md5('contrasenya2'.$frase_secretatrue), 024);
$opciones = array('iv'=>$iv'key'=>$llave);

$da fopen('archivo-secreto.enc''rb');
stream_filter_append($fp'mdecrypt.tripledes'STREAM_FILTER_READ$opciones);
$datos rtrim(stream_get_contents($da));
fclose($da);

echo 
$datos;
?>