Maison  >  Article  >  développement back-end  >  Comment décrypter le cryptage AES en JavaScript avec PHP à l'aide de mcrypt_decrypt() ?

Comment décrypter le cryptage AES en JavaScript avec PHP à l'aide de mcrypt_decrypt() ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 03:10:01686parcourir

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

Déchiffrement du cryptage AES en JavaScript avec PHP à l'aide de mcrypt_decrypt()

Lors du cryptage des mots de passe utilisateur en JavaScript à l'aide de CryptoJS et de la tentative de les déchiffrer à l'aide de la fonction mcrypt_decrypt() de PHP, divergences peut survenir. Cela est principalement dû au fait que mcrypt_decrypt() utilise uniquement la clé pour le cryptage/déchiffrement, alors que CryptoJS utilise un mot de passe pour dériver à la fois la clé et l'IV. Pour résoudre ce problème, il est nécessaire d'obtenir la clé et l'IV de la même manière en PHP.

Dérivation de clé et IV avec evpKDF

La fonction PHP suivante, evpKDF, peut être utilisée pour dériver la clé et l'IV à partir d'un mot de passe et d'un sel :

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

Déchiffrement avec Salt et le texte chiffré

Une fois la clé et l'IV dérivés, le texte chiffré peut être déchiffré à l'aide de 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>

Déchiffrement avec le texte chiffré au format OpenSSL

Si le texte chiffré a été formaté à l'aide du format propriétaire OpenSSL avec le préfixe "Salted__", vous pouvez utiliser la fonction suivante pour le déchiffrer :

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

Conclusion

En dérivant la clé et l'IV de la même manière que CryptoJS et en utilisant la méthode de décryptage appropriée, vous pouvez déchiffrer efficacement les mots de passe cryptés de JavaScript en PHP à l'aide de mcrypt_decrypt().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn