【发布时间】:2021-10-20 03:18:12
【问题描述】:
我正在尝试使用 mcrypt_encrypt 加密字符串,但收到此警告 Encryption mode requires an initialization vector of size 16。这是代码:
<?php
$str = "hassan";
$key = "WKSaRVxscxa7eDrX0mLjU6OUphS6F1z0";
$block = 16;
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CBC));
var_dump($encrypted);
这是我得到的输出
Warning: mcrypt_encrypt(): Encryption mode requires an initialization vector of size 16 in C:\laragon\www\info\index.php on line 10
string(0) ""
请帮帮我!!!
【问题讨论】:
-
你根本没有提供静脉注射,你卡在哪里了?
-
IV 必须指定为
mcrypt_encrypt()中的第五个参数。请注意,mcrypt 已弃用且不安全。 -
是的,这是旧代码。一直在做服务器。迁移到新的并没有在那里工作。 mcrypt 扩展安装在新服务器上。好的,我会检查IV,看看它是否有效。谢谢。
-
最后一个参数是默认参数设置为空。我不认为这对我来说是个问题。
-
放置静脉注射解决了这个问题。但是,我如何在服务器中做到这一点?为什么旧代码会这样工作。
标签: php encryption mcrypt