用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上,此代码仅用于学习测试性质,请勿用于正式场合,不保证安全性和稳定性。

1 条回复

  1. 赵老四说道:

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

扫码去手机上看