深入浅析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 相关文章推荐
JQuery 学习笔记 选择器之五
Jul 23 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
JSON辅助格式化处理方法
Mar 26 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
Jul 27 Javascript
javascript实现加载xml文件的方法
Nov 24 Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 Javascript
Node.js安装配置图文教程
May 10 Javascript
浅谈Vue数据响应
Nov 05 Javascript
ES6 Proxy实现Vue的变化检测问题
Jun 11 Javascript
js实现限定区域范围拖拉拽效果
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
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
ajax异步请求详解
2017/01/06 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
Python异常处理操作实例详解
2018/05/10 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
对Django url的几种使用方式详解
2019/08/06 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
美国在线珠宝商店:SZUL
2017/02/11 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
艺术系应届生的自我评价
2013/10/19 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
旅游安全协议书
2014/04/21 职场文书
2015年安全生产责任书
2015/01/30 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
金榜题名主持词
2015/07/02 职场文书
Python图像处理之图像拼接
2021/04/28 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
Python3的进程和线程你了解吗
2022/03/16 Python
MySQL Server层四个日志的实现
2022/03/31 MySQL