深入浅析JavaScript中的3DES


Posted in Javascript onAugust 24, 2016

3DES简介:

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

今天需要在客户端实现des 很快就找到了 http://www.tero.co.uk/des/code.php

应用示例

var key = "this is a 24 byte key !!";
var message = "This is a test message";
var ciphertext = des (key, message, 1, 0);
document.writeln ("DES Test: " + stringToHex (ciphertext));

当然发现这不是我们所需要的。我们服务端使用的是des-ede,java中好象叫triple des

这儿有个小坑 des方法本身支持3des

//how many iterations (1 for des, 3 for triple des)
var iterations = key.length > 8 ? 3 : 1; //changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys

但是对于key的使用有个小小的错误

如果是64位是des 正解,但是3des有可能是128位或192位

3des的过程是 en(k3, de(k2, en(k1, P)))

其中k1=k3的时候可以使用简化的128位密钥。

key="k1k1k1k1k2k2k2k2k2" 其实与 k1k1k1k1k2k2k2k2k1k1k1k1应该是等价的。作者没有实现

另外一个就是padding模式,简单的说就是块加密的时候,不足的空位应该怎么补起来 下面是源码

if (padding == 2) message += " "; //pad the message with spaces
else if (padding == 1) {temp = 8-(len%8); message += String.fromCharCode (temp,temp,temp,temp,temp,temp,temp,temp); if (temp==8) len+=8;} //PKCS7 padding
else if (!padding) message += "\0\0\0\0\0\0\0\0"; //pad the message out with null bytes

现在一般使用的是PKCS5/7

调用的注意一下这两点,其实des-ede也就实现了

示例

var key ="b964b7c58e99b59"+"b964b7c5";
var message = "This is a test message";
var ciphertext = des(key, message, 1, 0,0,1);
document.writeln("<br/>DES3 Test: " + stringToHex (ciphertext));

以上所述是小编给大家介绍的JavaScript中的3DES,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript的对话框详解与参数
Mar 08 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
javascript常见操作汇总
Sep 03 Javascript
JS的location.href跳出框架打开新页面的方法
Sep 04 Javascript
jQuery取消ajax请求的方法
Jun 09 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 Javascript
JavaScript实现简单的弹窗效果
May 19 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 Javascript
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
jQuery自适应轮播图插件Swiper用法示例
Aug 24 #Javascript
JavaScript lodash常见用法系列小结
Aug 24 #Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
Aug 24 #Javascript
JS实现获取当前URL和来源URL的方法
Aug 24 #Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 #Javascript
总结Javascript中的隐式类型转换
Aug 24 #Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 #Javascript
You might like
php笔记之:php数组相关函数的使用
2013/04/26 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
js select常用操作控制代码
2010/03/16 Javascript
js查错流程归纳
2012/05/04 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
python监控键盘输入实例代码
2018/02/09 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
Ajax的工作原理
2015/12/04 面试题
自荐信的两点禁忌
2013/10/30 职场文书
2014植树节活动总结
2014/03/11 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
电子信息工程自荐信
2014/05/26 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
药品开票员岗位职责
2015/04/15 职场文书
2015最新民情日记范文
2015/06/26 职场文书
运动会开幕式主持词
2015/07/01 职场文书
运动会班级前导词
2015/07/20 职场文书