将我的加密库从 Mcrypt 升级到 OpenSSL
问题:
是否可以将我的加密库从 Mcrypt 升级到 OpenSSL 并保留解密使用以下方法加密的数据的能力Mcrypt?
冲突信息:
网上似乎存在关于这两个库之间兼容性的冲突信息。
其他上下文:
我正在尝试将当前使用 Mcrypt 的加密类转换为使用 OpenSSL 的加密类。但是,我在解密使用 Mcrypt 版本加密的数据时遇到了困难。
解密工作代码:
以下 OpenSSL 版本中解密例程的修订代码已确认有效:
public function decrypt($data, $key) { $salt = substr($data, 0, 128); $enc = substr($data, 128, -64); $mac = substr($data, -64); list ($cipherKey, $macKey, $iv) = $this->getKeys($salt, $key); if ($mac !== hash_hmac('sha512', $enc, $macKey, true)) { return false; } $dec = openssl_decrypt($enc, $this->cipher, $cipherKey, OPENSSL_RAW_DATA, $iv); return $dec; }
测试结果:
使用各种数据和密钥测试此修改后的代码没有失败。
结论:
可以升级加密库从 Mcrypt 到 OpenSSL,并成功解密使用以前的库加密的数据,前提是您使用更新的解密例程。
以上是我可以在保持解密兼容性的同时从 Mcrypt 迁移到 OpenSSL 加密吗?的详细内容。更多信息请关注PHP中文网其他相关文章!