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 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
一些常用的Javascript函数
2006/12/22 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Django工程的分层结构详解
2019/07/18 Python
python程序文件扩展名知识点详解
2020/02/27 Python
python ETL工具 pyetl
2020/06/07 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
有原因的手表:Flex Watches
2019/03/23 全球购物
班组长工作职责
2013/12/25 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
体现团队精神的口号
2014/06/06 职场文书
公司合作协议范文
2014/10/01 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
2014年教育工作总结
2014/11/26 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
2015年度保密工作总结
2015/04/24 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
创业计划书之网吧
2019/10/10 职场文书
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电
基于PyQt5制作一个群发邮件工具
2022/04/08 Python