用nodejs写个简单的加密cmd
就是看到某“影子插座”用AES算法来加密传输数据,我是不是也能用这个算法干点什么,于是就想起来写个这玩意。
Linux上有ssh可以用作远程控制,Windows上却缺乏远程命令行工具,虽然也可以安装ssh,但是太费劲了。
想想原理,自己写一个应该难度不大,用AES加密也可以保证安全性,虽然安全性不如ssh的RSA非对称加密,但应付一下也是足够了。
既然是远程加密命令行,那么代码分为两部分:加解密、网络通信。
先说加解密。
用nodejs进行加解密十分方便,只需要引用crypto模块:
1 | var crypto = require( "crypto" ); |
然后创建需要的算法,加密和解密需要分别创建:
1 2 3 4 5 6 7 8 | // 两个密钥要相同 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进行网络通信也是相当方便,毕竟它天生就是干这个的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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对象,方法一样:
1 2 3 4 5 6 7 8 9 | // 发送数据 client.write(data); // 接受数据 client.on( "data" , function (chunk) { ... }); // 其他事件 client.on( "end" , function () { ... }); client.on( "error" , function () { ... }); |
好了,加解密和网络传输都有了,把它们组合起来就是加密网络传输通道了。
完整代码在github上,此代码仅用于学习测试性质,请勿用于正式场合,不保证安全性和稳定性。

666,大神编程代码,值得借鉴,一定要拼死的顶