2014-01-22 30 views
3
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree', { format: JsonFormatter }); 

//convert encrypted to a string for transfer 
//convert string back to Crypto object so it can be decrypted. 

var decrypted = CryptoJS.AES.decrypt(encrypted, "youngunicornsrunfree", { format: JsonFormatter }); 

以上两步,工作正常。但在两者之间,我需要将加密转换为字符串以便通过网络传输,然后再将其转换回来。我怎样才能做到这一点?如何转换为字符串并用CryptoJs再次返回

回答

8

让我们简化这个以便能够解决问题。杉杉我们开始是这样的:

jsonStr = '{"something":"else"}'; 
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree'); 
var decrypted = CryptoJS.AES.decrypt(encrypted, "youngunicornsrunfree"); 
console.log(decrypted.toString(CryptoJS.enc.Utf8)); 

这赋予我们的答案jsonStr后,我们进行加密然后进行解密。但是,我们希望将其发送到服务器。通过使用toString()来提取加密的字符串,我们可以轻松地做到这一点。听起来很简单吧?假设我们需要将加密的jsonStr发送到服务器。试试这个

jsonStr = '{"something":"else"}'; 
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree'); 
console.log("We send this: "+encrypted.toString()); 

现在说我们发送了一些东西,我们得到它回来。我们可以这样做:

var messageFromServer = "U2FsdGVkX19kyHo1s8+EwNuo/LQdL3RnSoDHU2ovA88RtyOs+PvpQ1UZssMNfflTemaMAwHDbnWagA8lQki5kQ=="; 
var decrypted = CryptoJS.AES.decrypt(messageFromServer, "youngunicornsrunfree"); 
console.log(decrypted.toString(CryptoJS.enc.Utf8)); 
+0

这不工作不幸。我收到一个空白字符串。如果我解密加密而没有将其转换为字符串,它会正常工作,但一旦我将其转换为字符串后就会失败。 (即使使用你的简单例子) – Baconbeastnz

+0

@Baconbeastnz空白的结果很可能不会输入密码或加密的信息。尝试在包含脚本'C​​ryptoJS.AES.decrypt(CryptoJS.AES.encrypt('It works !!!','pass')。toString(),'pass')。toString(CryptoJS .enc.Utf8)'如果有效,那么在解密或使用错误的密码之前,您可能正在操作加密的消息。 – DutGRIFF

相关问题