深入浅析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 相关文章推荐
用按钮控制iframe显示的网页实现方法
Feb 04 Javascript
jQuery.fn和jQuery.prototype区别介绍
Oct 05 Javascript
js 获取input点选按钮的值的方法
Apr 14 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
Apr 27 Javascript
快速掌握Node.js事件驱动模型
Mar 21 Javascript
AngularJS基础 ng-dblclick 指令用法
Aug 01 Javascript
JavaScript获取URL中参数querystring的方法详解
Oct 11 Javascript
JavaScript学习笔记--常用的互动方法
Dec 07 Javascript
vue.js或js实现中文A-Z排序的方法
Mar 08 Javascript
vue-cli3添加模式配置多环境变量的方法
Jun 05 Javascript
layer.open的自适应及居中及子页面标题的修改方法
Sep 05 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 02 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
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
python备份文件的脚本
2008/08/11 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python random模块用法解析及简单示例
2017/12/18 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
python实现抖音视频批量下载
2018/06/20 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
中学生在校期间的自我评价分享
2013/11/13 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
班级德育工作实施方案
2014/02/21 职场文书
物流管理专业求职信
2014/05/29 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
初中英语教学反思范文
2016/02/15 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
CentOS MySql8 远程连接实战
2022/04/19 MySQL