NODEJS和飞秋通讯,RSA、blowfish消息加密解密

本文介绍了如何使用NODEJS结合node-rsa模块实现与飞秋的通讯,通过RSA加密技术确保消息的安全性。作者首先通过Wireshark抓包分析飞秋的加密方式,然后详细讲解了如何修改node-rsa模块以适应飞秋的加密算法,并提供了测试代码以验证通信的正确性。
摘要由CSDN通过智能技术生成

Wireshark抓包后发现飞秋的消息都加密了。

看抓到的包,怀疑是RSA公钥(e,n)

下载安装nodejs,然后用 npm安装nodejs的模块node-rsa

修改node-rsa,修改NodeRSA.js

修改:

var DEFAULT_ENCRYPTION_SCHEME = 'pkcs1';
var DEFAULT_SIGNING_SCHEME = 'pkcs1';

增加:

NodeRSA.prototype.setPublicKey = function (bits, exp) {
        this.keyPair.setPublic(bits, exp);
};

NodeRSA.prototype.getPublicKey = function () {
        return this.keyPair.getPublic();
};

修改rsa.js

    RSAKey.prototype.getPublic = function () {
		var tn=this.n.toBuffer();
		var rn;
		if (tn.length==128) rn=tn;
		else
		{
			rn=new Buffer(128);
			tn.copy(rn,0,1,129);
		}
		return {'n':rn,'e':this.e};
    };


<

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它使用公钥和私钥来加密和解密数据。在Node.js中,我们可以使用`crypto`模块来实现RSA加密和解密。 首先,我们需要生成RSA密钥对。可以使用以下代码生成一个新的RSA密钥对: ```javascript const crypto = require('crypto'); const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048, publicKeyEncoding: { type: 'pkcs1', format: 'pem' }, privateKeyEncoding: { type: 'pkcs1', format: 'pem' } }); console.log('公钥:'); console.log(publicKey); console.log('私钥:'); console.log(privateKey); ``` 生成的公钥和私钥将以PEM格式显示。 接下来,我们可以使用生成的公钥进行加密,私钥进行解密。以下是一个示例: ```javascript const crypto = require('crypto'); // 加密 function encrypt(data, publicKey) { const buffer = Buffer.from(data, 'utf8'); const encrypted = crypto.publicEncrypt(publicKey, buffer); return encrypted.toString('base64'); } // 解密 function decrypt(encryptedData, privateKey) { const buffer = Buffer.from(encryptedData, 'base64'); const decrypted = crypto.privateDecrypt(privateKey, buffer); return decrypted.toString('utf8'); } // 使用示例 const plaintext = 'Hello, RSA!'; const encrypted = encrypt(plaintext, publicKey); console.log('加密后的数据:', encrypted); const decrypted = decrypt(encrypted, privateKey); console.log('解密后的数据:', decrypted); ``` 请注意,这只是一个基本示例,实际使用时可能需要处理更复杂的数据和错误处理。 希望这可以帮助到你!如有任何问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值