CryptoJS没有忠实地解密非拉丁字符

时间:2015-10-10 04:41:47

标签: javascript cryptojs latin1

我正在尝试使用CryptoJS AES,如下所示:

var msg = "café";
var key = "something";
var c = CryptoJS.AES.encrypt(msg, key).toString();
CryptoJS.AES.decrypt(c, key).toString(CryptoJS.enc.Latin1);

不幸的是,这会返回café,而不是café。显然,Latin1不是正确的编码,但我找不到更好的编码。有解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:-2)

您尝试将数据解密为Latin1字符串,即使您的输入字符串不在Latin1中。内部使用CryptoJS的编码与用于编写输入文件的编码不同。

您需要在加密时(对于字符串 - >字节数组转换)和解密时(对于字节数组 - >字符串转换)指定相同的编码。