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 Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs读取本地中文json文件出现乱码解决方法
Oct 10 NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 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 CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
你必须知道的Javascript知识点之"单线程事件驱动"的使用
2013/04/23 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
微信小程序实现简单购物车功能
2020/12/30 Javascript
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
python3 shelve模块的详解
2017/07/08 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
python退出循环的方法
2020/06/18 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
高中运动会入场词
2014/02/14 职场文书
公司授权委托书范文
2014/08/02 职场文书
同学聚会邀请函
2015/01/30 职场文书
施工员岗位职责
2015/02/10 职场文书