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 相关文章推荐
javascript实现上传图片前的预览(TX的面试题)
Aug 20 Javascript
javascript jQuery插件练习
Dec 24 Javascript
基于jquery的跨域调用文件
Nov 19 Javascript
javascript 事件处理程序介绍
Jun 27 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
Sep 21 Javascript
AngularJS 教程及实例代码
Oct 23 Javascript
原生js调用json方法总结
Feb 22 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
angularjs获取到My97DatePicker选中的值方法
Oct 02 Javascript
vue添加class样式实例讲解
Feb 12 Javascript
VSCode插件安装完成后的配置(常用配置)
Aug 24 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
ajax 的post方法实例(带循环)
2011/07/04 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
php内存缓存实现方法
2015/01/24 PHP
php时间函数用法分析
2016/05/28 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
面向对象的javascript(笔记)
2009/10/06 Javascript
javascript arguments使用示例
2014/12/16 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
js常用DOM方法详解
2017/02/04 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
工程部主管岗位职责
2013/11/17 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
标准单位租车协议书
2014/09/23 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
2015元旦感言
2015/12/09 职场文书