Javascript 如何使用CryptoJS解密从客户端发送到节点服务器的字段?
我正在尝试将以下解决方案应用到我的节点应用程序中,以解密通过POST从客户端浏览器发送的字段: 在控制台中获得匹配的值时,似乎在兜圈子。“hello”加密的值与从服务器和客户端应用的值相匹配(发送“hello”),但是现在没有显示任何一个的解密值 节点POST路由中的服务器端代码:Javascript 如何使用CryptoJS解密从客户端发送到节点服务器的字段?,javascript,node.js,encryption,aes,cryptojs,Javascript,Node.js,Encryption,Aes,Cryptojs,我正在尝试将以下解决方案应用到我的节点应用程序中,以解密通过POST从客户端浏览器发送的字段: 在控制台中获得匹配的值时,似乎在兜圈子。“hello”加密的值与从服务器和客户端应用的值相匹配(发送“hello”),但是现在没有显示任何一个的解密值 节点POST路由中的服务器端代码: var ENC_KEY = "c2VjcmV0"; //'secret' app.post('/hello', function (req, res) { console.log('POST /hello'
var ENC_KEY = "c2VjcmV0"; //'secret'
app.post('/hello', function (req, res) {
console.log('POST /hello');
var key = CryptoJS.enc.Base64.parse(ENC_KEY);
console.log('key: ' + key);
console.log('client msg ("hello"): ' + req.body.msg_hello);
var encrypted = CryptoJS.AES.encrypt("hello", key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
console.log('server msg "hello" encrypted to: ' + encrypted);
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
console.log('server msg decrypted: ' + hex2a(decrypted));
var decryptedClient = CryptoJS.AES.decrypt(req.body.msg_hello, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
console.log('client msg decrypted: ' + hex2a(decryptedClient));
res.end(JSON.stringify('{ response: "response" }'));
});
感谢您的帮助!如果您使用的是node,为什么不使用内置的加密模块?它会执行得更快,我想您会找到更多的例子。不知道这些是否是复制/粘贴错误,但是:
var decryptKey=ENC_KEY
行缺少一个;
。另外,CryptoJS.AES.decrypt
和CryptoJS.AES.encrypt
>应该使用相同的键..在上面的代码中,键!=ENC_KEY@neildaemond我现在已经更正。很抱歉在这里进行调查时尝试了一些事情!@mscdex我还没有阅读节点加密的所有文档,但我喜欢CryptoJS中提供的选项,例如能够使用不同的模式、填充等。不过,我会更深入地研究它现在!内置加密模块还允许您选择模式(它是密码名称的一部分,例如aes-128-ctr
或aes-128-ecb
)和打开/关闭PKCS填充等。它还提供节点流接口,以便您可以将它们与其他流连接到管道中。