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实现HTTPS发起POST请求
Apr 23 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
详解nodejs 配置文件处理方案
Jan 02 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 设置MySQL连接字符集的方法
2011/01/02 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
PHP引用符&的用法详细解析
2013/08/22 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
python实现用户登录系统
2016/05/21 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
捷克时尚网上商店:OTTO
2018/03/15 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
六一儿童节活动总结
2014/08/27 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
食品药品安全责任书
2015/05/11 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
导游词之桂林山水
2019/09/20 职场文书