避免加密問題:從 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中文網其他相關文章!