加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – mcrypt_encrypt无法初始化

发布时间:2020-12-13 17:21:02 所属栏目:PHP教程 来源:网络整理
导读:我试图使用Cbit模式中的Rijndael密码使用256位密钥加密 PHP中的一些数据但由于某种原因我收到以下错误消息: mcrypt_encrypt()模块初始化失败 我的代码: $hashKey = hash('sha256',$key); $iv = hash('sha256',$hashKey); // ------Cipher-------------key-
我试图使用Cbit模式中的Rijndael密码使用256位密钥加密 PHP中的一些数据但由于某种原因我收到以下错误消息:

mcrypt_encrypt()模块初始化失败

我的代码:

$hashKey = hash('sha256',$key);
    $iv = hash('sha256',$hashKey);

    //                                                 ------Cipher-------------key-------------Data-------------Mode---------IV--
    $encryptedQuestion = base64_encode(mcrypt_encrypt('MCRYPT_RIJNDAEL_256',$hashKey,$_POST['question'],MCRYPT_MODE_CBC,$iv));

任何人都可以看到这个错误吗?

解决方法

我可以发现代码存在一些问题:

>你的$iv不应该依赖于$hashKey;相反,您应该使用mcrypt_create_iv()单独创建它.
>您的$hashKey应该是二进制而不是文本.
> MCRYPT_RIJNDAEL_256是一个常量,不应该作为字符串传递.

以下代码比您的代码更详细,但它应该让您深入了解加密某些内容所需的步骤:

$crypto = mcrypt_module_open(MCRYPT_RIJNDAEL_256,'','');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($crypto),MCRYPT_DEV_URANDOM);

$hkey = hash('sha256',$key,true);

mcrypt_generic_init($handle,$hkey,$iv);

$enc_question = mcrypt_generic($handle,$_POST['question']);

mcrypt_generic_deinit($handle);
mcrypt_module_close($handle);

我也遗漏了任何错误检查.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读