首頁 > 後端開發 > php教程 > 如何使用 PHP 中的 mcrypt_decrypt() 解密 JavaScript 中的 AES 加密?

如何使用 PHP 中的 mcrypt_decrypt() 解密 JavaScript 中的 AES 加密?

Linda Hamilton
發布: 2024-11-05 03:10:01
原創
762 人瀏覽過

How to Decrypt AES Encryption in JavaScript with PHP Using mcrypt_decrypt()?

使用PHP 中的mcrypt_decrypt() 解密AES 加密

使用CryptoJS 在JavaScript 中加密使用者密碼並嘗試使用PHP 的mcrypt_decrypt() 函數解密時出現差異函數時,出現差異函數可以出現。這主要是因為 mcrypt_decrypt() 僅使用金鑰進行加密/解密,而 CryptoJS 使用密碼來匯出金鑰和 IV。為了解決這個問題,需要在 PHP 中以相同的方式取得金鑰和 IV。

使用evpKDF 匯出金鑰和IV

以下PHP 函數evpKDF 可用於從密碼和鹽匯出金鑰和IV:

<code class="php">function evpKDF($password, $salt, $keySize = 8, $ivSize = 4, $iterations = 1, $hashAlgorithm = "md5") {
    // ... (Code omitted for brevity) ...
}</code>
登入後複製

使用鹽和密文解密

一旦匯出金鑰和IV,就可以使用mcrypt_decrypt()解密加密的密文:

<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>
登入後複製

使用OpenSSL 格式的密文解密

如果加密的密文是使用帶有「Salted__」前綴的專有OpenSSL 格式進行格式化的,則可以使用以下函數解密:

<code class="php">function decrypt($ciphertext, $password) {
    // ... (Code omitted for brevity) ...
}</code>
登入後複製

結論

透過與CryptoJS 相同的方式匯出金鑰和 IV 並使用適當的解密方法,您可以使用 mcrypt_decrypt() 有效地從 PHP 中的 JavaScript 解密加密密碼。

以上是如何使用 PHP 中的 mcrypt_decrypt() 解密 JavaScript 中的 AES 加密?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板