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开发微信公众号后台服务实例
Sep 03 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
nodejs入门教程四:URL相关模块用法分析
Apr 24 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
Nodejs把接收图片base64格式保存为文件存储到服务器上
Sep 26 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
使用koa-log4管理nodeJs日志笔记的使用方法
Nov 30 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中PDO的错误处理
2011/09/04 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php密码生成类实例
2014/09/24 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
研讨会主持词
2014/04/02 职场文书
信息工作经验交流材料
2014/05/28 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
简爱读书笔记
2015/06/26 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python