PHP mcrypt_decrypt()
定义为
string mcrypt_decrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
如果$data
不是有效的 mcrypt_encrypt
ed 字符串,返回值是什么?
我使用的是 PHP 5.5.9。
我已经看到 PHP 5.6.0 包含 Return FALSE on failure
.
但是如何检测以前的PHP版本中的故障?
在 5.6.0 之前,失败将返回false
。您误读了更新日志:
不再接受无效的
key
和iv
大小。mcrypt_decrypt()
现在将引发警告,如果输入无效,则返回FALSE
。
"
失败"和"不是有效的mcrypt_encrypt
字符串"不是一回事......
失败可能是使用不受支持的算法/模式,libmcrypt或PHP本身的内部错误等。在这种情况下 - 它将返回 FALSE。
但是,实际上并没有无效的加密字符串 - 使用未经身份验证的密码模式时无法检测到(并且 mcrypt 不支持内置身份验证附带的密码模式)。
相反,您应该自己验证密文的有效性,这必须在您将其传递给 mcrypt_decrypt()
之前发生。你可以通过使用MAC来做到这一点,这本身就是一个很长的主题,所以你应该真的谷歌它......