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中的非阻塞方法介绍
Jun 05 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
解决nodejs的npm命令无反应的问题
May 17 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 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
Admin generator, filters and I18n
2011/10/06 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP7新功能总结
2019/04/14 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
javascript知识点收藏
2007/02/22 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
angularJs中datatable实现代码
2017/06/03 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
Python中对象的引用与复制代码示例
2017/12/04 Python
python matplotlib画图实例代码分享
2017/12/27 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Windows下python3.6.4安装教程
2018/07/31 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
怎么写有吸引力的自荐信
2013/11/17 职场文书
学前教育求职自荐信范文
2013/12/25 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
python热力图实现的完整实例
2022/06/25 Python
MySQL索引失效场景及解决方案
2022/07/23 MySQL