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 相关文章推荐
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
基于jQuery+JSON的省市二三级联动效果
Jun 05 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
Easyui的组合框的取值与赋值
Oct 28 Javascript
微信小程序 网络请求(GET请求)详解
Nov 16 Javascript
jQuery焦点图左右转换效果
Dec 12 Javascript
vue2.0父子组件及非父子组件之间的通信方法
Jan 21 Javascript
Vue组件和Route的生命周期实例详解
Feb 10 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
Sep 20 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 11 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
fgetcvs在linux的问题
2012/01/15 PHP
php判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
python脚本设置超时机制系统时间的方法
2016/02/21 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Opencv求取连通区域重心实例
2020/06/04 Python
python高级特性简介
2020/08/13 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
军训自我鉴定200字
2014/02/13 职场文书
文明村创建实施方案
2014/03/27 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
校运会宣传稿大全
2015/07/23 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python