深入浅析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 mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
Feb 28 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
bootstrap table配置参数例子
Jan 05 Javascript
Canvas + JavaScript 制作图片粒子效果
Feb 08 Javascript
基于jquery实现左右上下移动效果
May 02 jQuery
JS实现动态生成html table表格的方法分析
Jul 11 Javascript
如何在微信小程序中实现Mixins方案
Jun 20 Javascript
详解Java中String JSONObject JSONArray List转换
Nov 13 Javascript
jquery实现广告上下滚动效果
Mar 04 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
ftp类(myftp.php)
2006/10/09 PHP
利用PHP创建动态图像
2006/10/09 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
python练习程序批量修改文件名
2014/01/16 Python
在Python中编写数据库模块的教程
2015/04/29 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
详解Django CAS 解决方案
2019/10/30 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
网络教育自我鉴定
2013/11/01 职场文书
大学生找工作推荐信范文
2013/11/28 职场文书
大学生活学习的自我评价
2013/12/03 职场文书
地球一小时宣传标语
2014/06/24 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python