首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mdecrypt_generic

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mdecrypt_generic - 解密数据

警告

这个函数从 PHP 7.1.0 开始已经被 DEPRECATED 了。依靠这个功能是非常不鼓励的。

描述

代码语言:javascript
复制
string mdecrypt_generic ( resource $td , string $data )

该功能解密数据。请注意,由于填充数据,返回的字符串的长度实际上可能比未加密的字符串长。

参数

td

由 mcrypt_module_open()返回的加密描述符

data

加密的数据。

例子

示例#1 mdecrypt_generic()示例

代码语言:javascript
复制
<?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()。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com