避免加密问题:从 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 重新加密。
解决其他问题
此外,原始代码存在几个重要的加密问题:
OpenSSL 简化了填充,但是像 defuse/php-encryption 这样的专用加密库甚至可以增强安全性和便利性
结论
从 Mcrypt 过渡到 OpenSSL 需要仔细考虑这些加密的微妙之处。通过重新加密数据并解决其他漏洞,开发人员可以在缺乏 Mcrypt 支持的情况下继续有效地保护其应用程序。 OpenSSL 和 defuse/php-encryption 为可靠的加密提供了强大的替代方案。
以上是如何安全地将 PHP 加密从 Mcrypt 迁移到 OpenSSL?的详细内容。更多信息请关注PHP中文网其他相关文章!