深入浅析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 相关文章推荐
键盘 keycode的值 javascript时触发事件时很有用的要素
Nov 02 Javascript
一个可绑定数据源的jQuery数据表格插件
Jul 17 Javascript
javascript制作loading动画效果 loading效果
Jan 14 Javascript
jquery的ajax异步请求接收返回json数据实例
Jun 16 Javascript
JS字符串false转boolean的方法(推荐)
Mar 08 Javascript
jQuery为某个div加入行样式
Jun 09 jQuery
详解Layer弹出层样式
Aug 21 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
JavaScript遍历数组和对象的元素简单操作示例
Jul 09 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
Nov 13 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
PHP脚本数据库功能详解(中)
2006/10/09 PHP
PHP 数据库树的遍历方法
2009/02/06 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
深入PHP FTP类的详解
2013/06/13 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
JS中style属性
2006/10/11 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
axios学习教程全攻略
2017/03/26 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
Python实现Const详解
2015/01/27 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
python计算时间差的方法
2015/05/20 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
基于Python实现用户管理系统
2019/02/26 Python
python安装sklearn模块的方法详解
2020/11/28 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
ddl,dml和dcl的含义
2016/05/08 面试题
酒店led欢迎词
2014/01/09 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
团代会邀请函
2015/02/02 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
Java移除无效括号的方法实现
2021/08/07 Java/Android