浅析Node.js非对称加密方法
程序员文章站
2023-02-02 19:54:36
前言
刚回答了segmentfault上一个兄弟提的问题《非对称解密出错》。这个属于node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总...
前言
刚回答了segmentfault上一个兄弟提的问题《非对称解密出错》。这个属于node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总结下。
非对称加密的理论知识,可以参考笔者前面的文章《nodejs进阶:crypto模块之理论篇》。
完整的代码可以在 《nodejs学习笔记》 找到,也欢迎大家关注 程序猿小卡的github。
加密、解密方法
在node.js中,负责安全的模块是crypto。非对称加密中,公钥加密,私钥解密,加解密对应的api分别如下。
加密函数:
crypto.publicencrypt(key, buffer)
解密函数:
crypto.privatedecrypt(privatekey, buffer)
入门例子
假设有如下utils.js
// utils.js const crypto = require('crypto'); // 加密方法 exports.encrypt = (data, key) => { // 注意,第二个参数是buffer类型 return crypto.publicencrypt(key, buffer.from(data)); }; // 解密方法 exports.decrypt = (encrypted, key) => { // 注意,encrypted是buffer类型 return crypto.privatedecrypt(key, encrypted); };
测试代码app.js:
const utils = require('./utils'); const keys = require('./keys'); const plaintext = '你好,我是程序猿小卡'; const crypted = utils.encrypt(plaintext, keys.pubkey); // 加密 const decrypted = utils.decrypt(crypted, keys.privkey); // 解密 console.log(decrypted.tostring()); // 你好,我是程序猿小卡
附上公钥、私钥 keys.js:
exports.privkey = `-----begin rsa private key----- miicxqibaakbgqdfwnl8fchyki/tgo1ilb+ilgr8zecknno8xrdwttbbf5emg0qv 8gs0agkh649rb75i+tmu2jsnuvj61cncl/7ct2kaz6czzo1vygtzhlfnxd4v7ra+ aiwlzaxt/h3ee+/cfsl4vaji5wxh4mq4vtu7uejeogaogxacaiqifyrk3widaqab aogbakdrunylqfy2fnuvaqaadnvavoxqa+psw4g/d3inzjjhbrtlwdl2tzuximez qeefueqvhorota/xvg/r3tshid/qc71efmpvbjbqjjivjubjtzj/o+l2wxqzsvqe wzyatm6te3kzeg/culnmil+xu7xsumslbgpaurymha1jnkfpakea48auogsv8vfn r2quymilz20lkczffk2aq2+9isz1zjcvo+iuft71y3+etwomzczcuj5sn0w7lcsx nqyzcfdspqjban3o2vdqf3gua0q5vhmk9avsoxlmcfra1rikufotrtc609rfx4dc fxdxh09uvu/8hmdau8t6ofexcbriiyjqwdmcqqczljfddhfuifo2js8k62mnj6sb h0xlirnd2+/ruutubov4zuc+rm7gtuteoddazhym4c4yq0hfjnp25zm5xalpakbg atlpo04yi3r+dkzxquh1pyyku6m5x9tjm7cnkcikd4wmkjk5p+s2xjyqc1aezeyq vc187djprii4oc3pn1+takbuw51/5vbj+zmd73mvctt28omskox6ku29f0lveh8i ohiloo285vg5ztmxiy58taipvqxa7eu8hpqhthwa9qp6 -----end rsa private key----- `; exports.pubkey = `-----begin public key----- migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqdfwnl8fchyki/tgo1ilb+ilgr8 zecknno8xrdwttbbf5emg0qv8gs0agkh649rb75i+tmu2jsnuvj61cncl/7ct2ka z6czzo1vygtzhlfnxd4v7ra+aiwlzaxt/h3ee+/cfsl4vaji5wxh4mq4vtu7ueje ogaogxacaiqifyrk3widaqab -----end public key----- `;
上一篇: 蜜蜂喜欢上漂亮的蝴蝶
下一篇: 大龄剩女