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实现禁止后退的方法
Dec 27 Javascript
Prototype使用指南之array.js
Jan 10 Javascript
JS event使用方法详解
Apr 28 Javascript
js查找父节点的简单方法
Jun 28 Javascript
修复ie8&chrome下window的resize事件多次执行
Oct 20 Javascript
js有序数组的连接问题
Oct 01 Javascript
jquery实现图片灯箱明暗的遮罩效果
Nov 15 Javascript
我的Node.js学习之路(二)NPM模块管理
Jul 06 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
Sep 01 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
Jan 28 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
Apr 01 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
Jun 20 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
php5.2时间相差8小时
2007/01/15 PHP
PHP has encountered an Access Violation
2007/01/15 PHP
使用 MySQL Date/Time 类型
2008/03/26 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
Python Mysql自动备份脚本
2008/07/14 Python
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
python django集成cas验证系统
2014/07/14 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
建筑个人求职信范文
2014/01/25 职场文书
个人租房协议书
2014/04/09 职场文书
给老婆的保证书范文
2014/04/28 职场文书
拓展策划方案
2014/06/03 职场文书
2015年组织部工作总结
2015/04/03 职场文书
毕业生政审意见范文
2015/06/04 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
Java 数据结构七大排序使用分析
2022/04/02 Java/Android