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批量修改文件编码格式
Jan 22 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
详解Nodejs内存治理
May 13 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
分享node.js实现简单登录注册的具体代码
Apr 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
jquery中动态效果小结
2010/12/16 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
python读写ini文件示例(python读写文件)
2014/03/25 Python
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python实现猜拳小游戏
2020/04/05 Python
Python 切分数组实例解析
2019/11/07 Python
python自动下载图片的方法示例
2020/03/25 Python
Java语言程序设计测试题选择题部分
2014/04/03 面试题
网络宣传方案
2014/03/15 职场文书
投标保密承诺书
2014/05/19 职场文书
企业党员一句话承诺
2014/05/30 职场文书
工地标语大全
2014/06/18 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
工厂标语大全
2014/10/06 职场文书
勇敢的心观后感
2015/06/09 职场文书
六年级情感作文之500字
2019/10/23 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python