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 相关文章推荐
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
14款NodeJS Web框架推荐
Jul 11 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 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
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
php数组指针操作详解
2017/02/14 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
python装饰器使用方法实例
2013/11/21 Python
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python实现购物车程序
2018/04/16 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python-numpy-指数分布实例详解
2019/12/07 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
开放系统互连参考模型
2016/06/29 面试题
商场客服专员岗位职责
2014/06/13 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python