PHP:mcrypt_decrypt()在失败时返回什么

时间:2015-01-27 04:36:30

标签: php mcrypt

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版本中的失败?

2 个答案:

答案 0 :(得分:0)

在5.6.0之前,失败will return false。您误读了更改日志:

  

不再接受无效的keyiv尺寸。如果输入无效,mcrypt_decrypt()现在会发出警告并返回FALSE

答案 1 :(得分:0)

“失败”和“不是有效的mcrypt_encrypt ed字符串”不是一回事......

失败可能是使用不受支持的算法/模式,libmcrypt中的内部错误或PHP本身等。在这种情况下 - 它将返回FALSE。

然而,实际上并不存在无效的加密字符串 - 使用未经身份验证的密码模式时,并不能检测到这种情况(而且mcrypt不支持内置身份验证附带的密码)。

相反,您应该自己验证cipherText的有效性,并且必须在 之前将其传递给mcrypt_decrypt()。你通过使用MAC来做到这一点,这本身就是一个很长的话题,所以你应该去谷歌...