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 分栏效果实现代码
Aug 29 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
vue中动态添加class类名的方法
Sep 05 Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 Javascript
JavaScript中import用法总结
Jan 20 Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
原生js实现密码强度验证功能
Mar 18 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
使用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
PHPlet在Windows下的安装
2006/10/09 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
深入理解Python中的元类(metaclass)
2015/02/14 Python
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
python绘制玫瑰的实现代码
2020/03/02 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
构造方法和其他方法的区别
2016/04/26 面试题
档案管理员岗位职责
2013/12/01 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
入党综合考察材料
2014/06/02 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书