首頁 > 後端開發 > php教程 > 如何將基於 Mcrypt 的 PHP 程式碼遷移到 PHP 7.2 及更高版本中的 Openssl?

如何將基於 Mcrypt 的 PHP 程式碼遷移到 PHP 7.2 及更高版本中的 Openssl?

Mary-Kate Olsen
發布: 2024-12-04 01:57:10
原創
149 人瀏覽過

How Can I Migrate My Mcrypt-Based PHP Code to Openssl in PHP 7.2 and Beyond?

準備在 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 的兼容性。

除了不相容問題之外,現有程式碼還提出了幾個額外的安全問題:

  • 缺乏驗證: 缺少HMAC 會使資料容易受到竄改。
  • 不正確的填充:使用零位元組進行填充不符合業界最佳實踐,例如安全區塊模式加密所需的 PKCS#5 填充。
  • 位元組安全: 依賴 mb_substr() 進行字串操作會損害位元組安全性。

幸運的是,Openssl 原生支援 PKCS#5 填充。但是,強烈建議使用強大的加密庫,例如 defuse/php-encryption,它可以解決這些問題並提供更高層級的資料保護。

以上是如何將基於 Mcrypt 的 PHP 程式碼遷移到 PHP 7.2 及更高版本中的 Openssl?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板