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 相关文章推荐
使用js完成节点的增删改复制等的操作
Jan 02 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 Javascript
JS截取url中问号后面参数的值信息
Apr 29 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
Jun 26 Javascript
JS实现超精简响应鼠标显示二级菜单代码
Sep 12 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
Oct 14 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
May 24 Javascript
jquery Form轻松实现文件上传
May 24 jQuery
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
Sep 15 Javascript
深入剖析JavaScript instanceof 运算符
Jun 14 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 Javascript
JS运算符优先级与表达式示例详解
Sep 04 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新手上路(十)
2006/10/09 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
实例讲解PHP表单处理
2019/02/15 PHP
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
jQuery 添加元素和删除元素的方法
2020/07/15 jQuery
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
python中私有函数调用方法解密
2016/04/29 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
公司营业员的工作总结自我评价
2013/10/05 职场文书
目标责任书范文
2014/04/14 职场文书
人才市场接收函
2015/01/30 职场文书
滴水洞导游词
2015/02/10 职场文书
工程主管竞聘书
2015/09/15 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python