Aquí tienes una clase que te permite encriptar una cadena de caracteres y hacer la operación inversa.
Código PHP:
<?php
define (KEY,'this is a very long key, even too long for the cipher');
class Crypt {
function encrypt($str) {
/* Open module, and create IV */
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CFB, '');
$key = substr(sha1(KEY), 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
/* Initialize encryption handle */
if (mcrypt_generic_init($td, $key, $iv) != -1) {
/* Encrypt data */
$c_t = rtrim(mcrypt_generic($td, $str));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
return $iv.$c_t;
}
function decrypt($str) {
/* Open module, and create IV */
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CFB, '');
$key = substr(sha1(KEY), 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = substr($str,0,$iv_size);
$str = substr($str,$iv_size);
/* Initialize encryption handle */
if (mcrypt_generic_init($td, $key, $iv) != -1) {
/* Decrypt data */
$p_t = mdecrypt_generic($td, $str);
/* Clean up */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
return $p_t;
}
}
?>
En el define del principio de la clase le indicas tu clave secreta.
Para recuperar el valor encriptado:
Código PHP:
<?php
$c = new Crypt();
$enc = $c->encrypt('very important data');
?>
Para recuperar el valor original:
Código PHP:
<?php
$c = new Crypt();
$ori = $c->decrypt($enc);
?>
Albert Lanchas