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

Linda Hamilton
Libérer: 2024-11-05 03:10:01
original
732 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal