深入浅析JavaScript中的3DES
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,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
[J2SE]Java中3DES加密解密调用示例
jce.jar security/US_export_policy.jar security/local_policy.jar ext/sunjce_provider.jar Java运行时会自动加载这些包,因此对于带main函数的应用程序不需要设置到CLASSPATH环境变量中.对于WEB应用,不需要把这些包加到WEB-INF/lib目录下. 以下是java中调用sun公司提供的3DES加密解密算法的样本代码: 复制代码 代码如下: /*字符串 DESede(3DES) 加密*/ import
-
python实现的DES加密算法和3DES加密算法实例
本文实例讲述了python实现的DES加密算法和3DES加密算法.分享给大家供大家参考.具体实现方法如下: ############################################################################# # Documentation # ############################################################################# # Author: Todd Whitema
-
一个可逆加密的类(使用3DES加密)
一.提要 命名空间:System.Security.Cryptography.TripleDES 类 简单说明: 表示三重数据加密标准算法的基类,TripleDES 的所有实现都必须从此基类派生.是从 SymmetricAlgorithm 类里继承出来.TripleDES 使用 DES 算法的三次连续迭代.它可以使用两个或三个 56 位密钥. 使用目的:比较安全的加密一种方式,密钥和矢量的不同,会生产不同的加密字串.因为是DES算法的三次连续迭代,而且算法可逆,这样对于数据保密性和可恢复性都不错
-
字符串desede 3des加密示例分享
复制代码 代码如下: /*字符串 DESede(3DES) 加密*/import java.security.Security;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder; public class DES3 { private s
-
一行代码实现IOS 3DES加密解密
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密.数据加密标
-
php中3des加密代码(完全与.net中的兼容)
复制代码 代码如下: <?php class Crypt3Des { private $key = ""; private $iv = ""; /** * 构造,传递二个已经进行base64_encode的KEY与IV * * @param string $key * @param string $iv */ function __construct ($key, $iv) { if (empty($key) || empty($iv)) { echo 'ke
-
C#的3DES加密解密算法实例代码
C#类如下: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO; namespace ConsoleApplication1{ /// <summary> /// 加解密类 /// </summary> public class EncryptHelper
-
深入浅析JavaScript中的3DES
3DES简介: 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 今天需要在客户端实现des 很快就找到了 http://www.tero.co.uk/des/co
-
浅析JavaScript中var that=this
在阅读别人的代码时,发现别人写的代码中有这么一句:var that = this;,这代表什么意思呢?经过一番查阅,才明白是这么回事. 在JavaScript中,this代表的是当前对象. var that=this就是将当前的this对象复制一份到that变量中.这样做有什么意义呢? $('#conten').click(function(){ //this是被点击的#conten var that = this; $('.conten').each(function(){ //this是.c
-
浅析Javascript中bind()方法的使用与实现
在讨论bind()方法之前我们先来看一道题目: var altwrite = document.write; altwrite("hello"); //1.以上代码有什么问题 //2.正确操作是怎样的 //3.bind()方法怎么实现 对于上面这道题目,答案并不是太难,主要考点就是this指向的问题,altwrite()函数改变this的指向global或window对象,导致执行时提示非法调用异常,正确的方案就是使用bind()方法: altwrite.bind(document
-
浅析JavaScript中浏览器的兼容问题
浏览器兼容性问题是在实际开发中容易忽略而又最重要的一部分.我们在讲老版本浏览器兼容问题之前,首先要了解什么是能力检测,它是来检测浏览器有没有这种能力,即判断当前浏览器是否支持要调用的属性或者方法.下面做了一些简短的介绍. 1.innerText 和 innerContent 1)innerText 和 innerContent 的作用相同 2)innerText IE8之前的浏览器支持 3)innerContent 老版本的Firefox支持 4)新版本的浏览器两种方式都支持 1 // 老版本浏
-
深入浅析JavaScript中的Function类型
Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念. 1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的实例对象,具有自己的属性和方法.正因为函数式对象,所以函数名实际上也是一个指向函数对象的指针. 2. 常用的函数定义方式 1. 函数声明: function sum(a , b ){ return a+b; } 2. 表达式: va
-
浅析JavaScript中的事件委托机制跟深浅拷贝
今天聊下JavaScript中的事件委托跟深浅拷贝 一.事件委托 首先呢,介绍一下事件绑定 //方法一:通过onclick <button onclick="clickEvent()">点击</button> <script> function clickEvent(){ alert("点击事件"); } </script> //方法二:通过addEventListener <button id="bt
-
浅析JavaScript中的变量提升
目录 前言: 函数提升 var变量提升 let & const提升 Class提升 前言: JavaScript中奇怪的一点是你可以在变量和函数声明之前使用它们.就好像是变量声明和函数声明被提升了代码的顶部一样. sayHi() // Hi there! function sayHi() { console.log('Hi there!') } name = 'John Doe' console.log(name) // John Doe var name 然而JavaScript并不会移动你的
-
深入浅析JavaScript中的scrollTop
含义:滚动条高度 作用:滚动加载(ajax),滚动导航固定定位,滚动弹框定位等等. 展示滚动导航和侧边栏滚动固定定位的效果: 1.chrome浏览器 document.body.scrollTop和document.documentElement.scrollTop都可以 2.各浏览器下 scrollTop的差异 IE6/7/8/9/10: 对于没有doctype声明的页面里可以使用 document.body.scrollTop 来获取 scrollTop高度 : 对于有doctype声明的页
-
浅析javascript中函数声明和函数表达式的区别
javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,而函数表达式的函数只能在声明之后调用. 3).以函数声明的方法定义的函数并不是真正的声明,它们仅仅可以出现在全局中,或者嵌套在其他的函数中,但是它们不能出现在循环,条件或者try/catch/finally中,而 函数表达式可以在任何地方声明. 下面分别用两种方法定
-
浅析JavaScript中的平稳退化(graceful degradation)
所谓平稳退化,就是指可以让访问者在浏览器不支持javascript或者禁用了JavaScript的时候依旧可以顺利的浏览你的网页:即,虽然有些功能无法使用,但基本操作依旧可以顺利完成. 这里用在新窗口打开一个链接作为例子,我们知道js打开新窗口的方法: window.open(url,name,features) 在这里,url是要打开的网页的url地址,name是新窗口的名字,最后的features是一系列的参数 好,现在写一个简单的函数: function openwindow(winUrl
随机推荐
- arp欺骗的原理介绍与什么是ARP和防范ARP欺骗第1/3页
- Oracle出现超出打开游标最大数的解决方法
- ASP.Net 请求响应流程简述
- 写入cookie的JavaScript代码库 cookieLibrary.js
- 新手入门:C++下的引用类型
- python使用append合并两个数组的方法
- Android实现记事本功能(26)
- PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
- Python for Informatics 第11章之正则表达式(二)
- jquery与ajax获取特殊字符实例详解
- 高质量Python代码编写的5个优化技巧
- Android中BroadcastReceiver案例讲解
- mysql如何利用binlog进行数据恢复详解
- linux mpstat命令使用详解
- Spring-cloud Feign 的深入理解
- 详解vue2.0 资源文件assets和static的区别
- springboot整合JPA过程解析
- mysql全量备份和快速恢复的方法整理
- Redis Cluster集群数据分片机制原理
- keras导入weights方式