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创建web服务器之hello world程序
Aug 20 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 NodeJs
在nodejs中创建child process的方法
Jan 26 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP6新特性分析
2016/03/03 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
js实时监听文本框状态的方法
2011/04/26 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
js实现常用排序算法
2016/08/09 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
python入门教程 python入门神图一张
2018/03/05 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
暑期实践思想汇报
2014/01/06 职场文书
运动会广播稿300字
2014/01/10 职场文书
开业庆典主持词
2014/03/21 职场文书
2015年元旦活动总结
2014/05/09 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
开平碉楼导游词
2015/02/06 职场文书
公务员个人年终总结
2015/02/12 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js