Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entschlüssele ich die AES-Verschlüsselung in JavaScript mit PHP mithilfe von mcrypt_decrypt()?

Wie entschlüssele ich die AES-Verschlüsselung in JavaScript mit PHP mithilfe von mcrypt_decrypt()?

Linda Hamilton
Linda HamiltonOriginal
2024-11-05 03:10:01686Durchsuche

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

Entschlüsseln der AES-Verschlüsselung in JavaScript mit PHP mit mcrypt_decrypt()

Beim Verschlüsseln von Benutzerkennwörtern in JavaScript mit CryptoJS und dem Versuch, sie mit der mcrypt_decrypt()-Funktion von PHP zu entschlüsseln, treten Unstimmigkeiten auf entstehen kann. Dies liegt vor allem daran, dass mcrypt_decrypt() den Schlüssel nur zur Ver-/Entschlüsselung verwendet, während CryptoJS ein Passwort verwendet, um sowohl den Schlüssel als auch IV abzuleiten. Um dieses Problem zu beheben, ist es notwendig, den Schlüssel und IV auf die gleiche Weise in PHP zu erhalten.

Schlüssel- und IV-Ableitung mit evpKDF

Die folgende PHP-Funktion, evpKDF, kann dazu verwendet werden Leiten Sie den Schlüssel und IV aus einem Passwort und Salt ab:

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

Entschlüsselung mit Salt und Chiffretext

Sobald der Schlüssel und die IV abgeleitet wurden, kann der verschlüsselte Chiffretext mit mcrypt_decrypt() entschlüsselt werden:

<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>

Entschlüsselung mit OpenSSL-formatiertem Chiffretext

Wenn der verschlüsselte Der Chiffretext wurde mit dem proprietären OpenSSL-Format mit dem Präfix „Salted__“ formatiert. Sie können zum Entschlüsseln die folgende Funktion verwenden it:

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

Fazit

Indem Sie den Schlüssel und IV auf die gleiche Weise wie bei CryptoJS ableiten und die entsprechende Entschlüsselungsmethode verwenden, können Sie mit mcrypt_decrypt verschlüsselte Passwörter aus JavaScript in PHP effektiv entschlüsseln( ).

Das obige ist der detaillierte Inhalt vonWie entschlüssele ich die AES-Verschlüsselung in JavaScript mit PHP mithilfe von mcrypt_decrypt()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn