深入浅析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 相关文章推荐
JSON扫盲帖 JSON.as类教程
Feb 16 Javascript
setTimeout 不断吐食CPU的问题分析
Apr 01 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
Jul 09 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 Javascript
jQuery对象的length属性用法实例
Dec 27 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
简单实现IONIC购物车功能
Jan 10 Javascript
node学习记录之搭建web服务器教程
Feb 16 Javascript
jquery仿微信聊天界面
May 06 jQuery
Vue.js图片预览插件使用详解
Aug 27 Javascript
jQuery实现的老虎机跑动效果示例
Dec 29 jQuery
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
重置版游戏视频
2020/04/09 魔兽争霸
PHP获取网卡地址的代码
2008/04/09 PHP
php 图像函数大举例(非原创)
2009/06/20 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
军训自我鉴定100字
2014/02/13 职场文书
学校宣传标语
2014/06/18 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
终止劳动合同协议书
2014/10/05 职场文书
故宫的导游词
2015/01/31 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers