


Wie entschlüssele ich mit JavaScript verschlüsselte CryptoJS AES-Daten in PHP?
Verschlüsselung in JavaScript und Entschlüsselung in PHP
Problem
Ein Benutzer verschlüsselt ein Passwort in JavaScript mithilfe der CryptoJS-AES-Verschlüsselung und versucht, es in PHP mit mcrypt_decrypt() zu entschlüsseln, aber es werden falsche Ergebnisse erzielt.
Lösung
Die Diskrepanz ergibt sich aus der Methode, die zum Ableiten des Verschlüsselungsschlüssels und des Initialisierungsvektors (IV) in JavaScript verwendet wird PHP. CryptoJS leitet diese Werte mithilfe eines Passworts ab, während mcrypt_decrypt() von PHP nur einen Schlüssel erwartet.
PHP-Entschlüsselungsimplementierung
Um den Chiffretext korrekt zu entschlüsseln, muss der PHP-Code den Verschlüsselungsschlüssel und IV daraus ableiten das Passwort und Salt auf die gleiche Weise wie der JavaScript-Code. Dies kann mit einer Funktion wie evpKDF() erreicht werden, die die Hash-basierte Schlüsselableitungsfunktion (HKDF) implementiert.
<code class="php">function evpKDF($password, $salt, $keySize = 8, $ivSize = 4, $iterations = 1, $hashAlgorithm = "md5") { // ... Implementation ... }</code>
Sobald der Schlüssel und IV abgeleitet sind, kann mcrypt_decrypt() wie folgt aufgerufen 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>
Alternative Implementierung mit OpenSSL
Alternativ kann die OpenSSL-Erweiterung zum Entschlüsseln des Chiffretextes verwendet werden:
<code class="php">function decrypt($ciphertext, $password) { $ciphertext = base64_decode($ciphertext); if (substr($ciphertext, 0, 8) != "Salted__") { return false; } $salt = substr($ciphertext, 8, 8); $keyAndIV = evpKDF($password, $salt); $decryptPassword = openssl_decrypt( substr($ciphertext, 16), "aes-256-cbc", $keyAndIV["key"], OPENSSL_RAW_DATA, // base64 was already decoded $keyAndIV["iv"]); return $decryptPassword; }</code>
Das obige ist der detaillierte Inhalt vonWie entschlüssele ich mit JavaScript verschlüsselte CryptoJS AES-Daten in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)

Arbeiten mit Flash -Sitzungsdaten in Laravel

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs

12 Beste PHP -Chat -Skripte auf Codecanyon

Ankündigung von 2025 PHP Situation Survey
