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 上下滚动广告
Jun 17 Javascript
JavaScript 创建对象和构造类实现代码
Jul 30 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
Apr 19 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
关于微信上网页图片点击全屏放大效果
Dec 19 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
Jul 11 Javascript
Angular移动端页面input无法输入的解决方法
Nov 14 Javascript
boostrap模态框二次弹出清空原有内容的方法
Aug 10 Javascript
详解js实时获取并显示当前时间的方法
May 10 Javascript
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
JavaScript实现通讯录功能
Dec 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
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
处理Python中的URLError异常的方法
2015/04/30 Python
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
八年级物理教学反思
2014/01/19 职场文书
公司授权委托书
2014/04/04 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android