首頁 >後端開發 >php教程 >如何安全地將 PHP 加密從 Mcrypt 遷移到 OpenSSL?

如何安全地將 PHP 加密從 Mcrypt 遷移到 OpenSSL?

Susan Sarandon
Susan Sarandon原創
2024-12-03 16:30:14272瀏覽

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