Javascript 如何使用CryptoJS解密从客户端发送到节点服务器的字段?

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'

我正在尝试将以下解决方案应用到我的节点应用程序中,以解密通过POST从客户端浏览器发送的字段:

在控制台中获得匹配的值时,似乎在兜圈子。“hello”加密的值与从服务器和客户端应用的值相匹配(发送“hello”),但是现在没有显示任何一个的解密值

节点POST路由中的服务器端代码:

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填充等。它还提供节点流接口,以便您可以将它们与其他流连接到管道中。