首页 > 后端开发 > php教程 > 我可以在保持解密兼容性的同时从 Mcrypt 迁移到 OpenSSL 加密吗?

我可以在保持解密兼容性的同时从 Mcrypt 迁移到 OpenSSL 加密吗?

Mary-Kate Olsen
发布: 2024-12-30 19:12:13
原创
690 人浏览过

Can I Migrate from Mcrypt to OpenSSL Encryption While Maintaining Decryption Compatibility?

将我的加密库从 Mcrypt 升级到 OpenSSL

问题:

是否可以将我的加密库从 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板