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中使用构造函数实现继承的代码
Aug 12 Javascript
Javascript类库的顶层对象名用户体验分析
Oct 24 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
May 03 Javascript
JS实现商品倒计时实现代码
May 03 Javascript
jQuery动画效果实现图片无缝连续滚动
Jan 12 Javascript
JS中数组重排序方法
Nov 11 Javascript
vue中axios处理http发送请求的示例(Post和get)
Oct 13 Javascript
Bootstrap实现的表格合并单元格示例
Feb 06 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
Feb 10 Javascript
js中arguments对象的深入理解
May 14 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
JS前端canvas交互实现拖拽旋转及缩放示例
Aug 05 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入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
13个PHP函数超实用
2015/10/21 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
python私有属性和方法实例分析
2015/01/15 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
python匿名函数用法实例分析
2019/08/03 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
个人自我鉴定
2013/11/07 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS
Pandas搭配lambda组合使用详解
2022/01/22 Python