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 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 NodeJs
nodejs log4js 使用详解
May 31 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
js 分页全选或反选标识实现代码
2011/08/09 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
python主线程捕获子线程的方法
2018/06/17 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
大二学期个人自我评价
2014/01/13 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
优秀团员事迹材料
2014/12/25 职场文书
班主任远程培训研修日志
2015/11/13 职场文书