首页 >后端开发 >php教程 >如何安全地将 PHP 加密从 Mcrypt 迁移到 OpenSSL?

如何安全地将 PHP 加密从 Mcrypt 迁移到 OpenSSL?

Susan Sarandon
Susan Sarandon原创
2024-12-03 16:30:14219浏览

How Can I Safely Migrate My PHP Encryption from Mcrypt to OpenSSL?

避免加密问题:从 Mcrypt 过渡到 OpenSSL

Mcrypt 是一个旧 PHP 模块,将在 PHP 7.2 中停止支持。其推荐的替代品 OpenSSL 在实现方面略有不同。本文探讨了如何有效地将代码从 Mcrypt 迁移到 OpenSSL,同时保持关键的加密属性。

将 Mcrypt 代码转换为 OpenSSL

具体来说,让我们考虑以下 Mcrypt 代码:使用 AES 256 CBC 加密:

function encrypt($masterPassword, $data) {
    // ... (Omitted for brevity)
    return base64_encode($iv . $encrypted);
}

function decrypt($masterPassword, $base64) {
    // ... (Omitted for brevity)
    return trim($decrypted);
}

至关重要请注意,Rijndael-256(由 Mcrypt 使用)与 AES-256(由 OpenSSL 使用)不同。 OpenSSL 缺乏 Rijndael-256 支持。

需要重新加密

因此,直接转换是不可行的。相反,所有加密数据必须在 OpenSSL 下使用 AES-256 重新加密。

解决其他问题

此外,原始代码存在几个重要的加密问题:

  • 缺少身份验证(可以使用轻松添加HMAC)
  • 不正确的填充(建议 PKCS#5 填充)
  • 非字节安全操作(例如 mb_substr())

OpenSSL 简化了填充,但是像 defuse/php-encryption 这样的专用加密库甚至可以增强安全性和便利性

结论

从 Mcrypt 过渡到 OpenSSL 需要仔细考虑这些加密的微妙之处。通过重新加密数据并解决其他漏洞,开发人员可以在缺乏 Mcrypt 支持的情况下继续有效地保护其应用程序。 OpenSSL 和 defuse/php-encryption 为可靠的加密提供了强大的替代方案。

以上是如何安全地将 PHP 加密从 Mcrypt 迁移到 OpenSSL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn