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 05 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
jquery动态添加元素事件失效问题解决方法
May 23 Javascript
jQuery背景插件backstretch使用指南
Apr 21 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
May 19 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
静态页面实现 include 引入公用代码的示例
Sep 25 Javascript
webpack4简单入门实例
Sep 06 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 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实现框架(二)
2006/10/09 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
PHP实现简易blog的制作
2016/10/24 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
语义化 H1 标签
2008/01/14 Javascript
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
javascript正则表达式总结
2016/02/29 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python中import机制详解
2017/11/14 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
python内置数据类型之列表操作
2018/11/12 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
django表单的Widgets使用详解
2019/07/22 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
荷兰本土平价百货:HEMA
2017/10/23 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
暑假打工感想
2015/08/07 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
MySQL读取JSON转换的方式
2022/03/18 MySQL