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 返回布尔值Is()条件判断方法代码
May 14 Javascript
js弹出的对话窗口永远保持居中显示
Dec 15 Javascript
jQuery中的val()示例应用
Feb 26 Javascript
node.js中的http.get方法使用说明
Dec 14 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 Javascript
jQuery获取及设置表单input各种类型值的方法小结
May 24 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
Aug 01 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 Javascript
JS实现方形抽奖效果
Aug 27 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
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
python继承和抽象类的实现方法
2015/01/14 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
采购意向书范本
2014/03/31 职场文书
安全生产责任书范本
2014/04/15 职场文书
房屋过户委托书范本
2014/10/07 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
教育读书笔记
2015/07/02 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
导游词之江南周庄
2019/12/06 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
Django框架模板用法详解
2022/06/10 Python