深入浅析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 相关文章推荐
IE6/7/8/9不支持exec的简写方式
May 25 Javascript
JS如何判断移动端访问设备并解析对应CSS
Nov 27 Javascript
js中同步与异步处理的方法和区别总结
Dec 25 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
Jul 31 Javascript
Bootstrap实现水平排列的表单
Jul 04 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
实例解析js中try、catch、finally的执行规则
Feb 24 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 Javascript
JS实现贪吃蛇游戏
Nov 15 Javascript
vantUI 获得piker选中值的自定义ID操作
Nov 04 Javascript
JavaScript的function函数详细介绍
Nov 20 Javascript
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
模拟flock实现文件锁定
2007/02/14 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
小程序实现多列选择器
2019/02/15 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
python中base64加密解密方法实例分析
2015/05/16 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
Python帮你识破双11的套路
2019/11/11 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
什么是网络协议
2016/04/07 面试题
九年级政治教学反思
2014/02/06 职场文书
厂区绿化方案
2014/05/08 职场文书
责任书格式范文
2014/07/28 职场文书