CryptoJS を使用して JavaScript でユーザー パスワードを暗号化し、PHP の mcrypt_decrypt() 関数を使用してそれらを復号化しようとすると、不一致が発生します生じる可能性があります。これは主に、mcrypt_decrypt() が暗号化/復号化にキーのみを使用するのに対し、CryptoJS はキーと IV の両方を取得するためにパスワードを使用するためです。この問題に対処するには、PHP で同じ方法でキーと 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>
暗号化された暗号文が「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 サイトの他の関連記事を参照してください。