视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
NodeJS加密解密及node-rsa加密解密用法详解
2020-11-27 22:06:12 责编:小采
文档


要用nodejs开发接口,实现远程调用,如果裸奔太危险了,就在网上找了一下nodejs的加密,感觉node-rsa挺不错的,下面来总结一下简单的rsa加密解密用法

初始化环境

新建一个文件夹 node-rsa-demo , 终端进入,运行下面命令初始化

cd node-rsa-demo
npm init # 一路回车即可
npm install --save node-rsa

生成公钥私钥

在 node-rsa-demo 下新建一个文件 index.js 写上如下代码

var NodeRSA = require('node-rsa')
var fs = require('fs')
function generator() {
 var key = new NodeRSA({ b: 512 })
 key.setOptions({ encryptionScheme: 'pkcs1' })
 var privatePem = key.exportKey('pkcs1-private-pem')
 var publicPem = key.exportKey('pkcs1-public-pem')
 fs.writeFile('./pem/public.pem', publicPem, (err) => {
 if (err) throw err
 console.log('公钥已保存!')
 })
 fs.writeFile('./pem/private.pem', privatePem, (err) => {
 if (err) throw err
 console.log('私钥已保存!')
 })
}
generator();

先在 node-rsa-demo 文件夹下新建一个文件夹 pem 用来存放密钥的,然后执行 node index.js ,会发现在 pem 文件夹下生成了两个文件

  • private.pem
  • public.pem
  • 加密

    加密 hello world 这个字符串

    function encrypt() {
     fs.readFile('./pem/private.pem', function (err, data) {
     var key = new NodeRSA(data);
     let cipherText = key.encryptPrivate('hello world', 'base');
     console.log(cipherText);
     });
    }
    //generator();
    encrypt();

    然后执行 node index.js 终端里会输出一串类似

    fH1aVCUceJYVvt1tZ7WYc1Dh5dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA== 的base字符串,这就是用私钥加密后的密文了

    解密

    把上一步加密获得的密文复制粘贴到下面要解密的方法内

    function decrypt() {
     fs.readFile('./pem/public.pem', function (err, data) {
     var key = new NodeRSA(data);
     let rawText = key.decryptPublic('fH1aVCUceJYVvt1tZ7WYc1Dh5dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA==', 'utf8');
     console.log(rawText);
     });
    }
    //generator();
    //encrypt();
    decrypt();

    执行 node index.js 会发现又拿到 hello world

    参考

    https://github.com/rzcoder/node-rsa

    PS:下面通过一段代码看下nodejs加密解密

    nodejs是通集成在内核中的crypto模块来完成加密解密。

    常用加密解密模块化代码:

    /**
     * Created by linli on 2015/8/25.
     */
    var crypto = require('crypto');
    
    //加密
    exports.cipher = function(algorithm, key, buf) {
     var encrypted = "";
     var cip = crypto.createCipher(algorithm, key);
     encrypted += cip.update(buf, 'binary', 'hex');
     encrypted += cip.final('hex');
     return encrypted
    };
    
    //解密
    exports.decipher = function(algorithm, key, encrypted) {
     var decrypted = "";
     var decipher = crypto.createDecipher(algorithm, key);
     decrypted += decipher.update(encrypted, 'hex', 'binary');
     decrypted += decipher.final('binary');
     return decrypted
    };

    此处,只针对可逆加密。

    总结

    以上所述是小编给大家介绍的NodeJS加密解密及node-rsa加密解密用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    下载本文
    显示全文
    专题