if ($base64) {
$msg = base64_decode($msg);
}
if (!$td = mcrypt_module_open('rijndael-256', '', 'ctr', '')) {
return false;
}
$iv = substr($msg, 0, 32);
$mo = strlen($msg) - 32;
$em = substr($msg, $mo);
$msg = substr($msg, 32, strlen($msg) - 64);
$mac = $this->pbkdf2($iv . $msg, $k, 1000, 32);
if ($em !== $mac) {
return false;
}
if (mcrypt_generic_init($td, $k, $iv) !== 0) {
return false;
}
$msg = mdecrypt_generic($td, $msg);
$msg = unserialize($msg);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $msg;