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格式化金额可设置保留的小数位数
May 09 Javascript
通过JS动态创建一个html DOM元素并显示
Oct 15 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
Aug 09 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
Angularjs中controller的三种写法分享
Sep 21 Javascript
微信小程序多列选择器range-key使用详解
Mar 30 Javascript
详解基于vue-router的动态权限控制实现方案
Sep 28 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
使用async await 封装 axios的方法
Jul 09 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
Sep 13 Javascript
React Component存在的几种形式详解
Nov 06 Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
php实现用户在线时间统计详解
2011/10/08 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
PHP7 新增功能
2021/03/09 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
python实现超级马里奥
2020/03/18 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
动物学专业毕业生求职信
2013/10/11 职场文书
室内设计自我鉴定
2013/10/15 职场文书
写给女生的道歉信
2014/01/14 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python