Javascript Node.js代理请求并使用AES对其进行加密

Javascript Node.js代理请求并使用AES对其进行加密,javascript,node.js,encryption,express,aes,Javascript,Node.js,Encryption,Express,Aes,在Express应用程序中,最简单的方法是编写路由代码,将请求代理到另一台服务器,并在将响应发送到客户端(将在客户端解密)之前对其进行加密。 是否可以全部使用流来完成 既然这是显而易见的选择,为什么不直接使用HTTPS呢?是的,的确如此。然而,安全性比使用AES加密流要复杂得多。你想防御什么?您将如何分发和更新密钥?你将如何防止MITM?这只是我正在测试的东西…关于如何在浏览器中解密它,有什么建议吗?找到减少常见编码的客户端JS脚本。虽然我没用过,但这一个可能。。 var request = r

在Express应用程序中,最简单的方法是编写路由代码,将请求代理到另一台服务器,并在将响应发送到客户端(将在客户端解密)之前对其进行加密。
是否可以全部使用流来完成

既然这是显而易见的选择,为什么不直接使用HTTPS呢?是的,的确如此。然而,安全性比使用AES加密流要复杂得多。你想防御什么?您将如何分发和更新密钥?你将如何防止MITM?这只是我正在测试的东西…关于如何在浏览器中解密它,有什么建议吗?找到减少常见编码的客户端JS脚本。虽然我没用过,但这一个可能。。
var request = require('request'),
    http = require('http'),
    crypto = require('crypto'),
    acceptor = http.createServer().listen(8089);

acceptor.on('request', function(r, s) {
    var ciph = crypto.createCipher('aes192', 'mypassword');

    // simple stream object to convert binary to string
    var Transform = require('stream').Transform;
    var BtoStr = new Transform({decodeStrings: false});
    BtoStr._transform = function(chunk, encoding, done) {
       done(null, chunk.toString('base64'));
    };

    // get html from Goog, could be made more dynamic
    request('http://google.com').pipe(ciph).pipe(BtoStr).pipe(s);


    //  try encrypt & decrypt to verify it works, will print cleartext to stdout
    //var decrypt = crypto.createDecipher('aes192', 'mypassword');
    //request('http://google.com').pipe(ciph).pipe(decrypt).pipe(process.stdout);
})