A continuación, un ejemplo funcional de un cifrado de datos simétrico usando Rijndael en su modo de 256bits.
<?php
header(“Content-Type: text/plain; charset=utf-8″);
# Creamos una clave de 256bits o 32 caracteres
$key = md5(“Clave para el cifrado de datos `12345`!·$%&/()=”);
# Cadena a encriptar
$data = “Estamos aquí reunidos para ver el funcionamiento de un cifrado simétrico. ALE!”;
/**
* PROCESO DE CIFRADO
**/
# Inicializa el mudulo de cifrado
$td = mcrypt_module_open(‘rijndael-256′, ”, ‘ofb’, ”);
# Crea el vector de inicializacion y establece el tamaño de la clave (aleatorio)
$vi = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
# Inicializa el cifrado
mcrypt_generic_init($td, $key, $vi);
# Cifra los datos
$encryptedData = mcrypt_generic($td, $data);
# Termina el manejador de cifrado y cierra el modulo
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
# Muestra el cifrado
echo “Cifrado:\n{$encryptedData}\n\n”;
/**
* PROCESO DE DESCIFRADO
**/
# Inicializa el mudulo de cifrado
$td = mcrypt_module_open(‘rijndael-256′, ”, ‘ofb’, ”);
# Inicializa el cifrado
mcrypt_generic_init($td, $key, $vi);
# Crea el vector de inicializacion y establece el tamaño de la clave (aleatorio)
$vi = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
# Descifra los datos
$decryptedData = mdecrypt_generic($td, $encryptedData);
# Termina el manejador de descifrado y cierra el modulo
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
# Muestra el descifrado
echo “Descifrado:\n{$decryptedData}\n\n”;
?>
Aquí se ha utilizado una clave de longitud fija de 32 caracteres, pero hay muchas más variantes y posibilidades. Desde utilizar una longitud aleatoria hasta tener 2 claves y un sin fin de opciones más. Podemos complicarlo lo que queramos, contra más complicado más difícil será reventarlo (aunque todavía no se conoce el método).
Ale!!
Sonycrow Código, Ejemplo, Php
Últimos comentarios