ホームページ  >  記事  >  バックエンド開発  >  mcrypt_decrypt() を使用して PHP で JavaScript の AES 暗号化を復号化する方法

mcrypt_decrypt() を使用して PHP で JavaScript の AES 暗号化を復号化する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-05 03:10:01679ブラウズ

How to Decrypt AES Encryption in JavaScript with PHP Using mcrypt_decrypt()?

mcrypt_decrypt() を使用した PHP での JavaScript での AES 暗号化の復号化

CryptoJS を使用して JavaScript でユーザー パスワードを暗号化し、PHP の mcrypt_decrypt() 関数を使用してそれらを復号化しようとすると、不一致が発生します生じる可能性があります。これは主に、mcrypt_decrypt() が暗号化/復号化にキーのみを使用するのに対し、CryptoJS はキーと IV の両方を取得するためにパスワードを使用するためです。この問題に対処するには、PHP で同じ方法でキーと IV を取得する必要があります。

evpKDF によるキーと IV の導出

次の PHP 関数 evpKDF を使用して、パスワードとソルトからキーと IV を導出します:

<code class="php">function evpKDF($password, $salt, $keySize = 8, $ivSize = 4, $iterations = 1, $hashAlgorithm = "md5") {
    // ... (Code omitted for brevity) ...
}</code>

ソルトと暗号文を使用した復号化

キーと IV が導出されたら、暗号化された暗号文は mcrypt_decrypt() を使用して復号化できます。 :

<code class="php">$keyAndIV = evpKDF("Secret Passphrase", hex2bin($saltHex));
$decryptPassword = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $keyAndIV["key"], hex2bin($cipherTextHex), MCRYPT_MODE_CBC, $keyAndIV["iv"]);</code>

OpenSSL 形式の暗号文による復号化

暗号化された暗号文が「Salted__」プレフィックスが付いた独自の OpenSSL 形式を使用してフォーマットされている場合は、次の関数を使用して復号化できます。

<code class="php">function decrypt($ciphertext, $password) {
    // ... (Code omitted for brevity) ...
}</code>

結論

CryptoJS と同じ方法でキーと IV を導出し、適切な復号化メソッドを使用することで、mcrypt_decrypt() を使用して PHP の JavaScript から暗号化されたパスワードを効果的に復号化できます。

以上がmcrypt_decrypt() を使用して PHP で JavaScript の AES 暗号化を復号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。