首页 > 后端开发 > php教程 > 如何将基于 Mcrypt 的 PHP 代码迁移到 PHP 7.2 及更高版本中的 Openssl?

如何将基于 Mcrypt 的 PHP 代码迁移到 PHP 7.2 及更高版本中的 Openssl?

Mary-Kate Olsen
发布: 2024-12-04 01:57:10
原创
149 人浏览过

How Can I Migrate My Mcrypt-Based PHP Code to Openssl in PHP 7.2 and Beyond?

准备在 PHP 7.2 中删除 Mcrypt

随着 PHP 7.2 的临近,Mcrypt 扩展的弃用迫在眉睫。虽然 Openssl 是一种可行的替代方案,但实现这一转变可能具有挑战性,特别是对于那些不太熟悉密码学的人来说。

需要克服的障碍之一涉及将依赖于 Mcrypt 的 Rijndael-256 CBC 模式(具有 IV 保留)的代码转换为Openssl 的等效项。目前,这种直接转换是不可行的。原因在于 Rijndael-256 和 AES-256 之间的根本区别。

Mcrypt 的 Rijndael-256 实现在 256 位块大小上运行,而 Openssl 的 AES-256 遵循 128 位块大小。因此,这种差异排除了一种方法直接替代另一种方法的可能。此限制需要重新加密数据以实现与 AES-256 的兼容性。

除了不兼容问题之外,现有代码还提出了几个额外的安全问题:

  • 缺乏身份验证: 缺少 HMAC 会使数据容易受到篡改。
  • 不正确的填充:使用零字节进行填充不符合行业最佳实践,例如安全块模式加密所需的 PKCS#5 填充。
  • 字节安全: 依赖 mb_substr() 进行字符串操作会损害字节安全性。

幸运的是,Openssl 原生支持 PKCS#5 填充。但是,强烈建议使用强大的加密库,例如 defuse/php-encryption,它可以解决这些问题并提供更高级别的数据保护。

以上是如何将基于 Mcrypt 的 PHP 代码迁移到 PHP 7.2 及更高版本中的 Openssl?的详细内容。更多信息请关注PHP中文网其他相关文章!

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