用nodejs写个简单的加密cmd
就是看到某“影子插座”用AES算法来加密传输数据,我是不是也能用这个算法干点什么,于是就想起来写个这玩意。
Linux上有ssh可以用作远程控制,Windows上却缺乏远程命令行工具,虽然也可以安装ssh,但是太费劲了。
想想原理,自己写一个应该难度不大,用AES加密也可以保证安全性,虽然安全性不如ssh的RSA非对称加密,但应付一下也是足够了。
既然是远程加密命令行,那么代码分为两部分:加解密、网络通信。
先说加解密。
用nodejs进行加解密十分方便,只需要引用crypto模块:
var crypto = require("crypto");
然后创建需要的算法,加密和解密需要分别创建:
// 两个密钥要相同 var cipher = crypto.createCipher("aes-256-cfb", "密钥"); var decipher = crypto.createDecipher("aes-256-cfb", "密钥"); // 加密 var encryptdata = cipher.update(data) // 解密 var decryptdata = decipher.update(data)
这里只使用update()方法即可,虽然算法还有个final()方法,但也可以不调用,这样就以流的形式进行加解密。
有了数据,nodejs进行网络通信也是相当方便,毕竟它天生就是干这个的。
var net = require("net"); // 服务端 var server = net.createServer(function (client) { // 有新客户连入会调用,client为新客户对象 }); server.listen(4433, function () { console.log("服务器监听于 4433 端口"); }); // 客户端 var client = net.connect(4433, "localhost", function () { console.log("已连接"); });
上面代码中,两个clinet都是同样的socket对象,方法一样:
// 发送数据 client.write(data); // 接受数据 client.on("data", function (chunk) { ... }); // 其他事件 client.on("end", function() { ... }); client.on("error", function() { ... });
好了,加解密和网络传输都有了,把它们组合起来就是加密网络传输通道了。
完整代码在github上,此代码仅用于学习测试性质,请勿用于正式场合,不保证安全性和稳定性。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
666,大神编程代码,值得借鉴,一定要拼死的顶