mdecrypt_generic
mdecrypt_generic
(PHP 4 >= 4.0.2, PHP 5, PHP 7)
mdecrypt_generic - 解密数据
警告
这个函数从 PHP 7.1.0 开始已经被 DEPRECATED 了。依靠这个功能是非常不鼓励的。
描述
string mdecrypt_generic ( resource $td , string $data )
该功能解密数据。请注意,由于填充数据,返回的字符串的长度实际上可能比未加密的字符串长。
参数
td
由 mcrypt_module_open()返回的加密描述符
data
加密的数据。
例子
示例#1 mdecrypt_generic()示例
<?php
/* Data */
$key = 'this is a very long key, even too long for the cipher';
$plain_text = 'very important data';
/* Open module, and create IV */
$td = mcrypt_module_open('des', '', 'ecb', ''
$key = substr($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 = mcrypt_generic($td, $plain_text
mcrypt_generic_deinit($td
/* Reinitialize buffers for decryption */
mcrypt_generic_init($td, $key, $iv
$p_t = mdecrypt_generic($td, $c_t
/* Clean up */
mcrypt_generic_deinit($td
mcrypt_module_close($td
}
if (strncmp($p_t, $plain_text, strlen($plain_text)) == 0) {
echo "ok\n";
} else {
echo "error\n";
}
?>
上面的例子显示了如何检查加密前的数据是否与解密后的数据相同。在尝试解密数据之前,使用 mcrypt_generic_init()重新初始化加密缓冲区非常重要。
在调用此函数之前,应始终使用 mcrypt_generic_init()用密钥和IV初始化解密句柄。在加密完成后,您应该通过调用 mcrypt_generic_deinit()来释放加密缓冲区。有关示例,请参阅 mcrypt_module_open()。