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