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代码
Jun 27 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
Aug 12 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
javascript中caller和callee详解
Aug 10 Javascript
js完整倒计时代码分享
Sep 18 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
微信小程序实现红包雨功能
Jul 11 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 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
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
编写React组件项目实践分析
2018/03/04 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
冰淇淋店创业计划书范文
2013/12/27 职场文书
国家励志奖学金获奖感言
2014/01/09 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
八一建军节演讲稿
2014/09/10 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
七年级作文之雪景
2019/11/18 职场文书