ホームページ > バックエンド開発 > PHPチュートリアル > Blowfish 暗号化のために Mcrypt から OpenSSL に移行するにはどうすればよいですか?

Blowfish 暗号化のために Mcrypt から OpenSSL に移行するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-08 14:59:11
オリジナル
387 人が閲覧しました

How to Migrate from Mcrypt to OpenSSL for Blowfish Encryption?

Mcrypt から OpenSSL への移行

現在の実装では暗号化に Mcrypt を利用していますが、OpenSSL への移行を目指しています。 ECB モードの Mcrypt の Blowfish 暗号は、Mcrypt では IV 長が 56、OpenSSL では 0 が必要であるなど、OpenSSL とは異なります。

モジュールをシームレスに移行するには:

  • パディングを理解する違い:

    • Mcrypt は PKCS#5 パディングを使用しますが、OpenSSL は PKCS#7 を使用します。データを暗号化するときに一貫したパディングを確保します。
  • 手動パディング:

    • OpenSSL は PKCS#7 を使用するため、手動でパディングする必要があります。 Mcrypt で暗号化する前にデータを埋め込みます。これには、データに「1」を追加することが含まれます。
  • IV 初期化:

    • ECB モードは IV を使用しません。したがって、OpenSSL で ECB を使用する場合、コードで IV 初期化を削除する必要があります。
  • キーの長さに関する考慮事項:

    • Mcryptは最大 56 バイトのキー サイズをサポートしますが、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);
ログイン後にコピー

以上がBlowfish 暗号化のために Mcrypt から OpenSSL に移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート