准备在 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 的兼容性。
除了不兼容问题之外,现有代码还提出了几个额外的安全问题:
幸运的是,Openssl 原生支持 PKCS#5 填充。但是,强烈建议使用强大的加密库,例如 defuse/php-encryption,它可以解决这些问题并提供更高级别的数据保护。
以上是如何将基于 Mcrypt 的 PHP 代码迁移到 PHP 7.2 及更高版本中的 Openssl?的详细内容。更多信息请关注PHP中文网其他相关文章!