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服务器(10):处理POST请求
Dec 18 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 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设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
jquery获取节点名称
2015/04/26 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
举例详解Python中的split()函数的使用方法
2015/04/07 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
详解python logging日志传输
2020/07/01 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
北大自主招生自荐信
2013/10/19 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
高中生期末评语
2014/01/28 职场文书
父母对孩子的寄语
2014/04/09 职场文书
毕业典礼邀请函
2015/01/31 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
导游词之长城八达岭
2019/09/24 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python