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 url验证(url-valid)的使用方法
Nov 18 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 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入门源程序
2006/10/09 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python八大排序算法速度实例对比
2017/12/06 Python
python 动态加载的实现方法
2017/12/22 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
params有什么用
2016/03/01 面试题
挂牌仪式主持词
2014/03/20 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
综艺节目策划方案
2014/06/13 职场文书
高效课堂标语
2014/06/26 职场文书
党员个人剖析材料
2014/09/30 职场文书
工作检讨书大全
2015/01/26 职场文书
党员年终个人总结
2015/02/14 职场文书
个人政治思想总结
2015/03/05 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android