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 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
Oct 11 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
Dec 26 Javascript
cument.execCommand()用法深入理解
Dec 04 Javascript
手机端页面rem宽度自适应脚本
May 20 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
May 09 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
Dec 02 Javascript
Node.js 8 中的重要新特性
Jun 28 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
Dec 29 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
优秀员工自荐书范文
2013/12/08 职场文书
课程设计心得体会
2013/12/28 职场文书
运动会演讲稿50字
2014/08/25 职场文书
市场营销工作计划书
2014/09/15 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
电频谱管理的原则是什么
2022/02/18 无线电