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-extract的使用实例
Nov 18 NodeJs
Nodejs进程管理模块forever详解
Jun 01 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
nodejs基础知识
Feb 03 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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 进程锁定问题分析研究
2009/11/24 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
python实现决策树
2017/12/21 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
Django values()和value_list()的使用
2020/03/31 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
Keras实现DenseNet结构操作
2020/07/06 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
党校学习自我鉴定
2014/02/24 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
体检通知范文
2015/04/21 职场文书
话题作文之呼唤
2019/12/18 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
python中24小时制转换为12小时制的方法
2021/06/18 Python
python not运算符的实例用法
2021/06/30 Python
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js