ホームページ > バックエンド開発 > PHPチュートリアル > Mcrypt 暗号化を OpenSSL 暗号化に変換する方法: ステップバイステップ ガイド

Mcrypt 暗号化を OpenSSL 暗号化に変換する方法: ステップバイステップ ガイド

Patricia Arquette
リリース: 2024-11-15 02:00:02
オリジナル
730 人が閲覧しました

How to Convert Mcrypt Encryption to OpenSSL Encryption: A Step-by-Step Guide

Mcrypt から OpenSSL 暗号化への変換

従来の暗号化ライブラリである Mcrypt は、セキュリティの脆弱性と業界標準としての OpenSSL の出現により廃止されました。 Mcrypt から OpenSSL への切り替えは困難に思えるかもしれませんが、主な違いを理解し、適切な戦略を採用することで簡素化できます。

暗号とパディングの相違

使用している暗号である Blowfish には、暗号化のためのデータパディング。 OpenSSL は PKCS#7 パディングを使用しますが、Mcrypt は PKCS#5 を使用します。 PKCS#7 では最小パディング長 1 が必要ですが、PKCS#5 では 0 が受け入れられます。この違いは、各ライブラリから取得される暗号化結果に影響します。

IV の使用法

ECB モードでは、この場合、初期化ベクトル (IV) は必要ありません。ただし、他の暗号化モードではこの限りではありません。 ECB モードで OpenSSL を使用する場合は、IV 長を 0 に設定してください。

暗号化と復号

OpenSSL を使用して Mcrypt で暗号化されたデータを復号するには、暗号化の前に PKCS#7 による手動パディングが必要です。 。これにより、2 つのライブラリ間の互換性が保証されます。

サンプル コード

提供されたコードは、重要な違いと適切なパディング技術を示しています。

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

// Mcrypt padding
$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB);

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

// Decrypt using both methods
$dec_mcrypt = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB);
$dec_openssl = openssl_decrypt($enc, 'bf-ecb', $key, true);

echo bin2hex($enc) . PHP_EOL;
var_dump($dec_mcrypt);
echo PHP_EOL;
var_dump($dec_openssl);
ログイン後にコピー

このコードは、暗号化と復号化が成功することを示しています。 Mcrypt と OpenSSL の両方を使用し、互換性のために PKCS#7 パディングを適用します。

以上がMcrypt 暗号化を OpenSSL 暗号化に変換する方法: ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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