首頁 >後端開發 >php教程 >如何從 Mcrypt 遷移到 OpenSSL 以進行 Blowfish 加密?

如何從 Mcrypt 遷移到 OpenSSL 以進行 Blowfish 加密?

Linda Hamilton
Linda Hamilton原創
2024-12-08 14:59:11389瀏覽

How to Migrate from Mcrypt to OpenSSL for Blowfish Encryption?

從 Mcrypt 遷移到 OpenSSL

您目前的實作使用 Mcrypt 加密,但您的目標是過渡到 OpenSSL。 ECB 模式下的 Mcrypt 河豚密碼與 OpenSSL 有差異,例如 Mcrypt 要求 IV 長度為 56,OpenSSL 要求 IV 長度為 0。

無縫遷移模組:

  • 了解填充差異:

    • Mcrypt 使用PKCS#5 填充,而填充OpenSSL 使用PKCS#7。確保加密資料時填充一致。
  • 手動填充:

    • 由於OpenSSL 使用PKCS#7,因此必須手動在使用Mcrypt 加密資料之前填充數據。這涉及到將“1”附加到數據中。
  • IV 初始化:

    • ECB 模式不使用 IV。因此,當將 ECB 與 OpenSSL 結合使用時,您的程式碼應刪除 IV 初始化。
  • 密鑰長度注意事項:

    • Mcrypt支援最大密鑰大小,而OpenSSL 沒有密鑰大小限制。相應地調整您的密鑰大小。
  • 重新加密:

    • 為了確保相容性,請考慮重新加密您現有的使用OpenSSL 對資料進行Mcrypt 加密。這消除了由於不同填充演算法而導致的任何差異。

範例程式碼:

$key = "anotherpassword1";
$str = "does it work 12";

// MCRYPT with PKCS#7 padding
$iv = str_repeat("", 8); // Dummy IV for ECB
$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB, $iv);

// OpenSSL with PKCS#7 padding
$enc = openssl_encrypt($str, 'bf-ecb', $key, true);

// Decrypt with OpenSSL (requires re-encryption)
// $dec = openssl_decrypt($enc, 'bf-ecb', $key, true);
// echo var_dump($dec);

以上是如何從 Mcrypt 遷移到 OpenSSL 以進行 Blowfish 加密?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn