mcrypt_create_iv 返回未定义的变量

Posted

技术标签:

【中文标题】mcrypt_create_iv 返回未定义的变量【英文标题】:mcrypt_create_iv returns undefined variable 【发布时间】:2016-05-03 15:59:08 【问题描述】:

我的加密/iv 代码不起作用。每当我测试登录时,我都会收到此错误

警告: openssl_encrypt(): Using an empty Initialization Vector (iv) 可能不安全,不推荐在线/Users/luke/Sites/user.php 174

我已经追踪到这条

$size = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
$iv = mcrypt_create_iv($size, MCRYPT_DEV_URANDOM);
$method = "aes-128-cbc";
$passWord = mcrypt_create_iv($size, MCRYPT_DEV_URANDOM);
$verificationNumber = openssl_encrypt($passWord, $method, $iv);

如下所示,Mcrypt 安装良好。 你能帮忙还是我可能需要提供更多代码?

【问题讨论】:

请使用 PHP 的built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,您可以使用 password_hash() compatibility pack。 好的,谢谢,希望对您有所帮助 【参考方案1】:

您正在获取“CAST”的 iv 大小:MCRYPT_CAST_256 但您正在使用“aes-128-cbc”进行加密。那是算法不匹配。

CAST 块大小为 64 位,AES 块大小为 128 位。请改用MCRYPT_RIJNDAEL_128,AES 是 Rijndael 的子集,具有 128 位块。

【讨论】:

以上是关于mcrypt_create_iv 返回未定义的变量的主要内容,如果未能解决你的问题,请参考以下文章

PHP mcrypt_create_iv 返回问号和不正确的长度 - CodeIgniter

heroku 环境变量返回未定义

从 jquery ajax 调用分配变量返回未定义

Google 跟踪代码管理器自定义变量返回未定义

JS:变量返回未定义,除了之前定义它

VUE/CLI .env 变量返回未定义