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写的一个简单项目打包工具
May 11 NodeJs
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
关于NodeJS中的循环引用详解
Jul 23 NodeJs
NodeJS实现一个聊天室功能
Nov 25 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 无极分类(递归)实现代码
2010/01/05 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
PHP解决中文乱码
2017/04/28 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
python中tab键是什么意思
2020/06/18 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
python线性插值解析
2020/07/05 Python
python pymysql库的常用操作
2020/10/16 Python
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
C语言50道问题
2014/10/23 面试题
食堂员工工作职责
2013/12/18 职场文书
物流管理专业求职信
2014/05/29 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
毕业实习计划书
2015/01/16 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
三八妇女节寄语
2015/02/27 职场文书
redis数据结构之压缩列表
2022/03/21 Redis