Node.js DES加密的简单实现


Posted in Javascript onJuly 07, 2016

常见的加密算法基本分为这几类,1 :线性散列算法、2:对称性加密算法、3、非对称性加密算法 (记记记)

线性散列算法(签名算法):MD5,SHA1,HMAC

比如MD5:即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。

特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)

对称性加密算法:AES,DES,3DES

比如AES:(Advanced Encryption Standard)在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

非对称性加密算法:RSA,DSA,ECC

比如RSA:RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

NodeJS中的Crypto模块

node利用 OpenSSL库来实现它的加密技术,这是因为OpenSSL已经是一个广泛被采用的加密算法。它包括了类似MD5 or SHA-1 算法,这些算法你可以利用在你的应用中。

下面的代码使用Crypto模块DES算法的实现方法

/***
 * @author chenjianxiang
 * @date 2016-07-07
 */

var crypto = require('crypto');
var key = '12345670';
exports.des = {

  algorithm:{ ecb:'des-ecb',cbc:'des-cbc' },
  encrypt:function(plaintext,iv){
    var key = new Buffer(key);
    var iv = new Buffer(iv ? iv : 0);
    var cipher = crypto.createCipheriv(this.algorithm.ecb, key, iv);
    cipher.setAutoPadding(true) //default true
    var ciph = cipher.update(plaintext, 'utf8', 'base64');
    ciph += cipher.final('base64');
    return ciph;
  },
  decrypt:function(encrypt_text,iv){
    var key = new Buffer(key);
    var iv = new Buffer(iv ? iv : 0);
    var decipher = crypto.createDecipheriv(this.algorithm.ecb, key, iv);
    decipher.setAutoPadding(true);
    var txt = decipher.update(encrypt_text, 'base64', 'utf8');
    txt += decipher.final('utf8');
    return txt;
  }

};

使用DES加密解密方法

//加密
var cryptUtil = require("./utils/crypt");
var str = "/upload/image/201602120012.jpg";
var encrypt_text = cryptUtil.des.encrypt(str,0);
var decrypt_text = cryptUtil.des.decrypt(encrypt_text,0);
console.log(encrypt_text);
console.log(decrypt_text);

输出结果:

I+qwOsXQvBq18KVmX3ainoMHbs3nT+v64s

/upload/image/201602120012.jpg

以上这篇Node.js DES加密的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
Nov 12 Javascript
JavaScript中的原型和继承详解(图文)
Jul 18 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
jQuery按需加载轮播图(web前端性能优化)
Feb 17 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
Dec 18 Javascript
javaScript中"=="和"==="的区别详解
Mar 16 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 Javascript
JavaScript时间与时间戳的转换操作实例分析
Dec 07 Javascript
原生JS无缝滑动轮播图
Oct 22 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 #Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
Jul 07 #Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
Apr 16 #Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
Jul 07 #Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 #Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
Jul 06 #Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
Jul 06 #Javascript
You might like
谈谈PHP语法(5)
2006/10/09 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
Javascript 类与静态类的实现
2010/04/01 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
Python删除空文件和空文件夹的方法
2015/07/14 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python文件操作方法详解
2020/02/09 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python 创建守护进程的示例
2020/09/29 Python
python 决策树算法的实现
2020/10/09 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
你常见到的runtime exception
2016/09/05 面试题
Unix里面如何在后台运行程序
2016/10/14 面试题
2015年党员创先争优承诺书
2015/01/22 职场文书
酒店员工手册范本
2015/05/14 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书