PHP
加密 | Cryptography

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()。