Bagaimana untuk menyahsulit kata laluan yang disulitkan dengan CryptoJS dalam PHP?

DDD
Lepaskan: 2024-11-03 16:56:02
asal
945 orang telah melayarinya

How to Decrypt a Password Encrypted with CryptoJS in PHP?

Menyelesaikan Masalah Penyahsulitan dengan PHP untuk Penyulitan JavaScript

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan