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版本中的失败?
答案 0 :(得分:0)
在5.6.0之前,失败will return false
。您误读了更改日志:
不再接受无效的
key
和iv
尺寸。如果输入无效,mcrypt_decrypt()
现在会发出警告并返回FALSE
。
答案 1 :(得分:0)
“失败”和“不是有效的mcrypt_encrypt
ed字符串”不是一回事......
失败可能是使用不受支持的算法/模式,libmcrypt中的内部错误或PHP本身等。在这种情况下 - 它将返回FALSE。
然而,实际上并不存在无效的加密字符串 - 使用未经身份验证的密码模式时,并不能检测到这种情况(而且mcrypt不支持内置身份验证附带的密码)。
相反,您应该自己验证cipherText的有效性,并且必须在 之前将其传递给mcrypt_decrypt()
。你通过使用MAC来做到这一点,这本身就是一个很长的话题,所以你应该去谷歌...