nodejs加密Crypto的实例代码


Posted in NodeJs onJuly 07, 2016

加密技术通常分为两大类:“对称式”和“非对称式”。

对称式加密:

就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。
非对称式加密:

就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。

加密为系统中经常使用的功能,node自带强大的加密功能Crypto,下面通过简单的例子进行练习。

1、加密模块的引用:

var crypto=require('crypto');
var $=require('underscore');var DEFAULTS = {
  encoding: {
    input: 'utf8',
    output: 'hex'
  },
  algorithms: ['bf', 'blowfish', 'aes-128-cbc']
};

默认加密算法配置项:

输入数据格式为utf8,输出格式为hex,

算法使用bf,blowfish,aes-128-abc三种加密算法;

2、配置项初始化:

function MixCrypto(options) {
  if (typeof options == 'string')
    options = { key: options };

  options = $.extend({}, DEFAULTS, options);
  this.key = options.key;
  this.inputEncoding = options.encoding.input;
  this.outputEncoding = options.encoding.output;
  this.algorithms = options.algorithms;
}

加密算法可以进行配置,通过配置option进行不同加密算法及编码的使用。

3、加密方法代码如下: 

MixCrypto.prototype.encrypt = function (plaintext) {
  return $.reduce(this.algorithms, function (memo, a) {
    var cipher = crypto.createCipher(a, this.key);
    return cipher.update(memo, this.inputEncoding, this.outputEncoding)
      + cipher.final(this.outputEncoding)
  }, plaintext, this);
};

使用crypto进行数据的加密处理。

4、解密方法代码如下:

MixCrypto.prototype.decrypt = function (crypted) {
  try {
    return $.reduceRight(this.algorithms, function (memo, a) {
      var decipher = crypto.createDecipher(a, this.key);
      return decipher.update(memo, this.outputEncoding, this.inputEncoding)
        + decipher.final(this.inputEncoding);
    }, crypted, this);
  } catch (e) {
    return;
  }
};

使用crypto进行数据的解密处理。

通过underscore中的reduce、reduceRight方法,进行加密和解密的算法执行。

本文根据民少编写的算法进行编写,如有不足之处,敬请原谅。菜鸟在路上,继续前进。

以上这篇nodejs加密Crypto的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
NodeJS Express框架中处理404页面一个方式
May 28 NodeJs
基于NodeJS的前后端分离的思考与实践(二)模版探索
Sep 26 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
Nodejs中 npm常用命令详解
Jul 04 #NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 #NodeJs
NodeJs——入门必看攻略
Jun 27 #NodeJs
浅析Nodejs npm常用命令
Jun 14 #NodeJs
nodejs 的 session 简单使用
Jun 06 #NodeJs
详解nodejs与javascript中的aes加密
May 22 #NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 #NodeJs
You might like
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
很让人受教的 提高php代码质量36计
2012/09/05 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
详解Python中dict与set的使用
2015/08/10 Python
python中的编码知识整理汇总
2016/01/26 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
经管应届生求职信
2013/11/17 职场文书
金融与证券专业求职信
2014/06/22 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电