Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menyahsulit JavaScript CryptoJS AES Data Disulitkan dalam PHP?
Penyulitan dalam JavaScript dan Penyahsulitan dalam PHP
Seorang pengguna sedang menyulitkan kata laluan dalam JavaScript menggunakan penyulitan CryptoJS AES dan cuba menyahsulitnya dalam PHP menggunakan mcrypt_decrypt() tetapi menemui keputusan yang salah.
Percanggahan timbul daripada kaedah yang digunakan untuk memperoleh kunci penyulitan dan vektor permulaan (IV) dalam JavaScript dan PHP. CryptoJS memperoleh nilai ini menggunakan kata laluan, manakala mcrypt_decrypt() PHP hanya mengharapkan kunci.
Untuk menyahsulit teks sifir dengan betul, kod PHP mesti memperoleh kunci penyulitan dan IV daripada kata laluan dan garam dengan cara yang sama seperti kod JavaScript. Ini boleh dicapai menggunakan fungsi seperti evpKDF(), yang melaksanakan fungsi terbitan kunci berasaskan cincang (HKDF).
<code class="php">function evpKDF($password, $salt, $keySize = 8, $ivSize = 4, $iterations = 1, $hashAlgorithm = "md5") { // ... Implementation ... }</code>
Setelah kunci dan IV diperoleh, mcrypt_decrypt() boleh digunakan seperti berikut :
<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>
Sebagai alternatif, sambungan OpenSSL boleh digunakan untuk menyahsulit teks sifir:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Menyahsulit JavaScript CryptoJS AES Data Disulitkan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!