Dalam percubaan anda untuk menyahsulit kata laluan yang disulitkan dalam JavaScript menggunakan CryptoJS dan menyahsulitnya pada pelayan PHP dengan mcrypt_decrypt(), anda telah menghadapi masalah di mana kata laluan yang dinyahsulit rosak. Ini kerana parameter yang diberikan kepada mcrypt_decrypt() adalah salah.
Untuk menyelesaikan isu ini, anda perlu memahami perbezaan cara CryptoJS dan mcrypt_decrypt() mengendalikan penyulitan. CryptoJS menggunakan frasa laluan yang disediakan dalam var encryptedPassword = CryptoJS.AES.encrypt(kata laluan, "Frasa Laluan Rahsia") untuk menjana kedua-dua kunci penyulitan dan vektor permulaan (IV) untuk penyulitan AES.
Sebaliknya, mcrypt_decrypt() hanya menggunakan frasa laluan sebagai kunci penyulitan. Ini bermakna anda perlu mendapatkan kunci dan IV dengan cara yang sama seperti CryptoJS untuk berjaya menyahsulit teks sifir dalam PHP.
Kod berikut menunjukkan cara menangani isu ini:
<code class="php">$saltHex = $_POST['salt']; // Received from the JavaScript request $ciphertextHex = $_POST['ciphertext']; // Received from the JavaScript request // Convert salt from hex to binary $salt = hex2bin($saltHex); function evpKDF($password, $salt, $keySize, $ivSize) { $hasher = hash_init('sha256'); hash_update($hasher, $password); hash_update($hasher, $salt); $derivedBytes = hash_final($hasher, TRUE); return array( "key" => substr($derivedBytes, 0, $keySize), "iv" => substr($derivedBytes, $keySize, $ivSize) ); } // Derive key and IV from passphrase and salt $keyAndIV = evpKDF("Secret Passphrase", $salt, 16, 16); // Decrypt ciphertext using mcrypt_decrypt() $decryptPassword = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $keyAndIV["key"], hex2bin($ciphertextHex), MCRYPT_MODE_CBC, $keyAndIV["iv"]);</code>
Dengan memperoleh kunci dan IV dengan cara yang sama seperti CryptoJS, anda memastikan proses penyahsulitan dilakukan dengan betul dan kata laluan yang dinyahsulit adalah tepat.
Atas ialah kandungan terperinci Bagaimana untuk menyahsulit kata laluan yang disulitkan dengan CryptoJS dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!