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 相关文章推荐
javascript支持firefox,ie7页面布局拖拽效果代码
Dec 20 Javascript
js中关于new Object时传参的一些细节分析
Mar 13 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
Aug 13 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
Aug 18 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
Angular.js中处理页面闪烁的方法详解
Mar 09 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
Mar 09 Javascript
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
Angular浏览器插件Batarang介绍及使用
Feb 07 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
Feb 21 Javascript
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
使用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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
PHP语法速查表
2007/01/02 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
python组合无重复三位数的实例
2018/11/13 Python
python全栈知识点总结
2019/07/01 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
自学python用什么系统好
2020/06/23 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
结构和类有什么异同
2012/07/16 面试题
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
总裁岗位职责
2013/12/04 职场文书
工商管理实习生自我鉴定范文
2013/12/18 职场文书
满月酒邀请函
2015/01/30 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书