【发布时间】:2018-05-05 08:26:03
【问题描述】:
我需要 php 解密算法方面的帮助。
当我在解密函数中传递错误的加密数据时出现错误。所以我需要使用异常处理错误。有可能吗?
我尝试了这段代码,但没有成功
function decrypt($encrypt_data) {
$key = ENC_KEY;
$encryption_key = base64_decode($key);
list($encrypted_data, $iv) = explode('::', base64_decode($encrypt_data), 2);
try {
if(openssl_decrypt($encrypted_data, 'aes-256-cbc', $encryption_key, 0, $iv)) {
throw new customException($encrypted_data);
}
}
catch (customException $e) {
echo $e->errorMessage();
}
}
但是这个函数给了我错误:-
警告:openssl_decrypt():IV 传递的只有 7 个字节长,密码 需要一个精确 16 字节的 IV,在 abc.php 中用 \0 填充
【问题讨论】:
-
这不是错误,而是警告。不是一回事。该函数本身会将 IV 填充为正确的长度并且仍然可以工作。如果您想修复警告,您可以在使用前验证 IV,并在需要时自行填充。
-
顺便说一句,如果解密有效,为什么要抛出异常?您实际上也没有保存解密的字符串。
-
@magnus 感谢您的评论。当我传递错误的加密数据时,解密不起作用。我只需要错误(警告)处理,所以我不描述保存或返回数据
标签: php exception encryption error-handling