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 相关文章推荐
jQuery 入门讲解1
Apr 15 Javascript
jQuery渐变发光导航菜单的实例代码
Mar 27 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
Javascript 是你的高阶函数(高级应用)
Jun 15 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
Dec 30 Javascript
js微信分享API
Oct 11 Javascript
微信小程序-拍照或选择图片并上传文件
Jan 06 Javascript
关于Ajax的原理以及代码封装详解
Sep 08 Javascript
Node.js中的child_process模块详解
Jun 08 Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 Javascript
微信小程序实现选择地址省市区三级联动
Jun 21 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 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
获得Google PR值的PHP代码
2007/01/28 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
一看就懂得Python的math模块
2018/10/21 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
python如何绘制疫情图
2020/09/16 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
秋季运动会通讯稿
2014/01/24 职场文书
八一慰问活动方案
2014/02/07 职场文书
农村葬礼主持词
2014/03/31 职场文书
学校校庆演讲稿
2014/05/22 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
资金申请报告范文
2015/05/14 职场文书