7
我想用CryptoJS在Javascript中加密並在PHP中解密。 JS代碼是:AES-256-CBC Mcrypt-PHP解密和Crypto-JS加密
var salt = CryptoJS.lib.WordArray.random(128/8);
var key256Bits500Iterations = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 256/32, iterations: 500 });
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f'); // just chosen for an example, usually random as well
encrypted = CryptoJS.AES.encrypt("Message", key512Bits1000Iterations, { iv: iv });
var data_base64 = crypted.ciphertext.toString(CryptoJS.enc.Base64);
var iv_base64 = crypted.iv.toString(CryptoJS.enc.Base64);
var key_base64 = crypted.key.toString(CryptoJS.enc.Base64);
而且PHP如下:
$encrypted = base64_decode($data_base64);
$iv = base64_decode($iv_base64);
$key = base64_decode($key_base64);
$plaintext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
echo ($plaintext);
這不會返回正確的答案。
我不確定事情進展緩慢!我要做我自己的IV,但如果我不只是說:
CryptoJS.AES.Encrypt("Message", "Secret Passphrase");
var data_base64 = crypted.ciphertext.toString(CryptoJS.enc.Base64);
var iv_base64 = crypted.iv.toString(CryptoJS.enc.Base64);
var key_base64 = crypted.key.toString(CryptoJS.enc.Base64);
它成功地在PHP代碼的工作 - 只有key_base64是不是可以改變的,它必須是什麼用戶記得......然後它給了我一個鹽擺脫輸入的密碼的關鍵,IDK它是如何設法獲取使用CryptoJS
這讓我很生氣= [ – Paul
作品,雖然我加了'\ r \ N'字符修剪PHP端 –
@Shuric的名單我有一個項目使用cryptoJS 。它是科爾多瓦的客戶端服務器移動應用程序。我之前在客戶端使用cryptoJS進行加密和解密,因爲我只需要無法讀取sqlite數據。但我需要加密服務器端的數據,以便在通過互聯網傳輸時使其無法讀取。所以我認爲這與你的答案相反。所以你能幫我解決它。老實說,我仍然不明白與AES加密我只使用密碼加密和cryptoJS解密。我不知道iv和鹽是什麼。提前致謝。 –