function encrypt($key, $plain_text)
{
// returns encrypted text
// incoming: should be the $key that was encrypt
// with and the $plain_text that wants to be encrypted
$plain_text = trim($plain_text);
/*
We need a way to generate a _unique_ initialization vector
but at the same time, be able to know how to gather our IV at both
encrypt/decrypt stage. My personal recommendation would be
(if you are working with files) is to get the md5() of the file.
In this example, however, I want more of a broader scope, so I chose
to md5() the key, which should be the same both times. Note that the
IV
needs to be the size of our algorithm, hence us using substr.
*/
/* generate an initialization vector */
$iv = substr(md5($key), 0,mcrypt_get_iv_size
(MCRYPT_CAST_256,MCRYPT_MODE_CFB));
/* now we do our normal encrypting */
$c_t = mcrypt_encrypt (MCRYPT_CAST_256, $key, $plain_text,
"cfb", $iv);
return trim(chop(base64_encode($c_t)));
}
function decrypt($key, $c_t)
{
// incoming: should be the $key that you encrypted
// with and the $c_t (encrypted text)
// returns plain text
// decode it first :)
$c_t = trim(chop(base64_decode($c_t)));
/* generate an initialization vector */
$iv = substr(md5($key), 0,mcrypt_get_iv_size
(MCRYPT_CAST_256,MCRYPT_MODE_CFB));
/* now we do our normal decrypting */
$p_t = mcrypt_decrypt (MCRYPT_CAST_256, $key, $c_t, "cfb",
$iv);
return trim(chop($p_t));
}