node crypto生成公钥私钥进行数据加解密

crypto 是 node 内置的模块,用来做数据加解密,非常方便。

之前,我们的前端用的是 jsencrypt 做加密,后端则用 node-rsa 做解密,公钥和私钥都是通过 node-ras 生成的,代码如下

const NodeRSA = require('node-rsa')

let key = new NodeRSA({ b: 1024 })
    key.setOptions({ encryptionScheme:'pkcs1'})
    
let pubkey = key.exportKey('public') //生成公钥,发给前端用于数据加密
let privkey = key.exportKey('private')//生成私钥,用于数据解密

解密的代码也很简单

let key = new NodeRSA(privkey)
	key.setOptions({ encryptionScheme: 'pkcs1' })
//encryptData是加密后的数据	
const s = encryptData.replace(/\s+/g, '+')
const decryptData = key.decrypt(s, 'utf8')

虽然很简单,但是额外安装的包依然让我很不爽,于是乎

const { generateKeyPairSync, publicEncrypt, privateDecrypt } = require('crypto')
//生成公钥和私钥
const { publicKey, privateKey } = generateKeyPairSync('rsa', {
    modulusLength: 1024,
    publicKeyEncoding: {
        type: 'spki',
        format: 'pem'
    },
    privateKeyEncoding: {
        type: 'pkcs8',
        format: 'pem'
    }
});
//需要加密的数据
const data = "data to crypto"

const pub = publicKey.toString('ascii')
const pri = privateKey.toString('ascii')
// console.log(pub, pri)

// 公钥加密
const encryptData = publicEncrypt(pub, Buffer.from(data)).toString('base64');
console.log('encode:', encryptData);

// 私钥解密
const decryptData = privateDecrypt(pri, Buffer.from(encryptData.toString('base64'), 'base64'));
console.log('decode:', decryptData.toString());

加密的结果

encode: Me+2EbDsMVLQHPKR8ZB3K88EDs4jNKuHsAZzMIjY3DCO7JEJGu3Tfkwv0tX4kDMiQvrxyJkR7tlpHQ1f91BrweAK6mkeyeyNQ3XOfsHwIEZJB+iv8IZpKiIlyE1KOGaUsN2Q8MyTRZ86IF+Qj4MwotDggXH/ADAHC0oJB/D5H5s=

解密的结果

decode: data to crypto

看看,加解密的过程是不是更简单呢

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值