首页
学习
活动
专区
工具
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()。

扫码关注腾讯云开发者

领取腾讯云代金券