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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
使用PHP开发留言板功能
2019/11/19 PHP
jQuery的animate函数学习记录
2014/08/08 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python hashlib模块实例使用详解
2019/12/24 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
大学生党员自我批评
2014/02/14 职场文书
经典禁毒标语
2014/06/16 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
自查自纠整改报告
2014/11/06 职场文书
新教师个人总结
2015/02/06 职场文书
项目验收申请报告
2015/05/15 职场文书
2015大一新生军训感言
2015/08/01 职场文书