我在我的NodeJS应用程序中使用crypto-js纯文本加密/解密。当我在服务器端测试以下代码时,一切按预期工作:
var encrypted_string = CryptoJS.AES.encrypt(input_string, '123Key');
var bytes = CryptoJS.AES.decrypt(encrypted_key.toString(), '123Key');
var decryted_string = bytes.toString(CryptoJS.enc.Utf8);
但是,当我通过 AJAX 调用发送encrypted_string时,出现错误
我的 AJAX 调用代码在这里:
let data = {}
data.encrypted_string = 'foo';
$.ajax({
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
url: '/route/to/',
success:function(response_data_json) {
// do something
}
}
})
在路由代码中:
var ciphertext = req.body.encrypted_string
var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), '123Key');
var decryted_string = bytes.toString(CryptoJS.enc.Utf8);
我在字节上收到错误...线
格式错误的 UTF-8 数据
提前感谢您的任何指导
首先我注意到一个小错别字:c <> n var ecnrypted_string = Cry...
但是,这不是问题的根源。
您可能缺少的是服务器上的 JSON.decode,因为您的密文 var 仍然包含您从客户端发送的确切字符串,您可以看到如下所示:
let data = {};
data.encrypted_string = 'foo';
let stringified = JSON.stringify(data);
console.log(stringified);
console.log(stringified.toString());
两个日志的输出都是:{"encrypted_string":"foo"},当然不能由CryptoJS直接解析。
希望这有帮助。 最好 塞博