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极简入门教程(二):定时器
Oct 25 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
浅谈JS运算符&&和|| 及其优先级
2016/08/10 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python验证码识别处理实例
2015/12/28 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
心理健康心得体会
2014/01/02 职场文书
质量主管工作职责
2014/09/26 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
Java 在生活中的 10 大应用
2021/11/02 Java/Android