我試圖使用CryptoJS對數據進行編碼/解碼,作爲我想開發的代碼的初步測試。這是我用來加密的代碼:無法使用CryptoJS解密字符串
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var message = "Secret Message";
var key = CryptoJS.enc.Hex.parse('36ebe205bcdfc499a25e6923f4450fa8');
var iv = CryptoJS.enc.Hex.parse('be410fea41df7162a679875ec131cf2c');
// Encription. Works ok
var encrypted = CryptoJS.AES.encrypt(
message,key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
console.log('encrypted:'+encrypted.ciphertext.toString());
<script>
這是我用來解密的第一個測試。它的工作原理確定,返回3f0e590d2617dc7007b89350bd590409
// Decription. Works ok with "encrypted" parameter
var decrypted = CryptoJS.AES.decrypt(
encrypted,key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
console.log('decrypted:'+decrypted.toString(CryptoJS.enc.Utf8));
讓我們通知,encrypted
參數是從以前調用CryptoJS.AES.encrypt
結果。這是一個對象。
我的問題是,當我試圖直接解密字符串:
// Decription. It fails with manual data
var manual_data = CryptoJS.enc.Hex.parse('3f0e590d2617dc7007b89350bd590409');
var decrypted = CryptoJS.AES.decrypt(
manual_data,key,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);
console.log('decrypted, by hand:'+decrypted.toString(CryptoJS.enc.Utf8));
它返回一個「空」的對象(在上面的例子中一個空字符串)。似乎有一些CryptoJS.AES.decrypt需要的數據存儲在第一個示例的加密對象中,但是第二個示例的數組不存在。
有沒有人知道爲什麼會發生這種情況?
非常感謝,DutGRIFF,這是一個棘手的問題:) –
JSBin很快......它完成了這項工作。 –