`
greens.leaf
  • 浏览: 62166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

到底什么是3倍DES

阅读更多
还是那句老话,这种专业技术性的问题,什么Google 百度全都不顶用,还是wikipedia靠谱。

TripleDES,通常被记为TDES,更标准的写法是TDEA(Triple Data Encryption Algorithm),3DES的写法是不标准的,应当避免。

TripleDES是在DES基础之上发展的,这个算法使用三个密钥Key1,Key2和Key3对明文依次做三次DES加解密得到密文,解密的过程则恰好反过来。

这三个Key1,Key2和Key3合在一起组成一个密钥组(key bundle)。

选择三个密钥时可以有两种方式:
1)Key1 != Key2 !=Key3 != Key1,即三个密钥各不相同,记做 3TDES,或者3TDEA
2)Key1 != Key2, Key3 = Key1,即第一次和第三次DES加密使用相同的密钥,第二次DES加密使用另外的密钥,记做2TDES,或者3TDEA。
或者说,TDES根据密钥的选择可以分为3TDES和2TDES。

对明文做处理的时候,可以三次都是DES加密过程,也可以是加密和解密相间。比较常用的是两种方式:
1)加密-加密-加密  也被记做EEE模式;
2)加密-解密-加密  也被挤作EDE模式。
其中EDE模式的使用更加广泛。这里有个地方要指出的是,如果选择Key1=Key2=Key3,采用EDE模式处理的话,TDES和DES的工作效果相同。

分组和加密强度:
DES/TDES是分组加密的算法,每个分组大小64bit。
DES的加密密钥是56bit,外加8bit的校验位。3TDES和2TDES的加密密钥分别对应是168bit和112bit。
或者说DES/2TDES/3TDES的加密强度分别是56/112/192bit。

但是针对特定攻击方式,DES/2TDES/3TDES的抗攻击性不是那么好。
DES是可以暴力破解的。
2TDES方面,“两面夹”(meet-in-middle)攻击对2TDES特别有效。2TDES对  chosen-plaintext 或者 known-plaintext 攻击的表现能力也受到怀疑,官方认为2TDES的加密强度实际只有80bit。
3TDES方面, 目前认为破解3TDES需要232 known plaintexts, 2113 steps, 290 single DES encryptions, and 288 memory,这个现在认为实际是完不成的。不过因为破解算法可以并行完成,倘若攻击者花费billion-dollor级别的预算和数年时间,通过特定明文攻击是轻而易举的事情。

DES/TDES和AES
AES是DES/TDES的“法定继承人”。相比DES/TDES,AES的分组更大,可以使用的密钥也更长。由于设计的原因,在软件环境下,TDES的计算速度要比AES的计算慢6倍。
在实际环境中AES正在逐渐取代TDES。不过TDES的设计在硬件环境下更为容易实现,例如在VPN应用中就还有使用TDES的。尽管如此,在这些硬件环境下,AES也正在慢慢取代TDES。

SP800-67是NIST对TDES的规范。

在规范的附录B中给出了一个加解密的实例,可以作为TDES实现的验证。
密钥:
Key1  = 0123456789ABCDEF
Key2  = 23456789ABCDEF01
Key3  = 456789ABCDEF0123

明文    明文16进制   密文16进制
“The quic” 5468652071756663 A826FD8CE53B855F
“k brown ” 6B2062726F776E20 CCE21C8112256FE6
“fox jump” 666F78206A756D70 68D5C05DD9B6B900

不过这里面有个小小的错误,"The quic"中的字符“i”对应的asci码应该是0x69,该规范中把它处理成了0x66,不过后面的的加密过程看起来是OK的。

我在jdk中,使用"TripleDES/ECB/Nopadding"方式通过了验证。另外还验证了此时的加密模式是EDE。
2
3
分享到:
评论

相关推荐

    3DES加密解密工具

    在3DES中,数据首先用一个密钥进行DES加密,然后用第二个密钥进行DES解密,最后再用第三个密钥进行DES加密。这种三次应用DES的过程显著增强了加密的强度,使得密钥长度达到了168位,即使在现代计算能力下也极难破解...

    des3_3des加密_

    3DES通过将一个DES加密过程执行三次来增强其安全性,以抵御针对单一DES的潜在攻击。 描述提到"3des加密代码,使用MATLAB语言,可输入8字节明文",这表明提供的压缩包内包含两个MATLAB文件,用于实现3DES加密功能,...

    3DES算法计算MAC

    1. 什么是 3DES 算法? 3DES 算法是基于 DES 算法的一种变种,使用三重 DES 加密来提高安全性。它使用三个 56 位的 DES 密钥来加密数据,然后将三个加密结果组合成一个 168 位的密钥。 2. 3DES 算法的计算过程 3...

    nodejs实现3des(2倍长)加密方式,与DES加密工具一致

    3DES是DES的增强版本,通过使用三个不同的56位密钥,实际密钥长度达到168位,大大增强了安全性。 在Node.js中,我们可以使用内置的`crypto`模块来实现DES和3DES加密解密。下面我们将详细介绍如何操作: 1. **引入...

    des_latest.tar.gz_3DES verilog_3des_3des verilog_des_verilog 3d

    标题中的"des_latest.tar.gz_3DES verilog_3des_3des verilog_des_verilog 3d"提及了两种广泛使用的对称加密算法:DES(Data Encryption Standard)和3DES(Triple DES)。3DES是DES的增强版本,为了解决DES的相对较...

    C++实现3Des算法.zip_3DES算法 C++_3des_C++_visual c_加密算法

    DES是一种对称加密算法,使用56位的密钥对数据进行加密,而3DES是通过三次应用DES算法来提高其安全性,从而提供更强大的加密强度,其密钥长度达到了168位。 在C++中实现3DES算法通常涉及以下几个关键步骤: 1. **...

    DES3.rar_DES3 VC_c++ des3_des3 _vc des3_加密解密vc

    DES3通常指的是Triple DES(三重DES),是DES加密算法的一种加强版本,它通过三次应用DES算法来提高安全性。 描述中提到的"使用DES3进行加密解密,在VC上调试运行"意味着该项目使用C++编程语言,并且包含了一个在VC...

    des 3des 加密 解密

    对于3DES,需要两个或三个56位的密钥。 3. 数据块准备:DES处理64位的数据块,所以输入数据需要按照这个大小进行划分。 4. 加密:调用库提供的加密函数,如`DES_crypt()`,传入数据块和密钥进行加密。 5. 解密:...

    DES算法工具(DES_3DES_MAC加密解密器)

    一:加解密 DES(单倍长) 3DES(双倍长) 3DES(三倍长) 二:MAC运算 ANSI-X9.9-MAC PBOC-DES-MAC PBOC-3DES-MAC . . .

    DES 3DES 源码

    3DES有三种模式:1) EDE(Encrypt-Decrypt-Encrypt),2) DDE(Decrypt-Encrypt-Decrpyt),3) EEE(Encrypt-Encrypt-Encrypt)。其中EDE是最常见的一种,它使用两个不同的密钥,第一次和第三次使用相同的密钥,第二...

    三重数据加密算法 3DES源码

    最早的定义了该算法的标准(ANS X9.52,1998年发布)将其描述为“三重数据加密算法(TDEA)”— 即为ANSI X3.92中定义的数据加密算法(DEA)的三次重复操作— 而完全没有使用术语“3DES”或“DES”。FIPS PUB 46-3...

    3DES加密算法源码

    最早的定义了该算法的标准(ANS X9.52,1998年发布)将其描述为“三重数据加密算法(TDEA)”— 即为ANSI X3.92中定义的数据加密算法(DEA)的三次重复操作— 而完全没有使用术语“3DES”或“DES”。FIPS PUB 46-3...

    3DES加密js前端示例

    3DES(Triple Data Encryption Algorithm,三重数据加密算法)是一种强化版的DES(Data Encryption Standard)加密算法,它通过三次应用DES加密过程来提高安全性。在JavaScript中实现3DES加密通常是为了在网络通信中...

    3DES加密java实现

    3DES是对原始DES算法的扩展,它通过执行三次加密过程来提高安全性。简而言之,3DES分为两种模式:EDE(Encrypt-Decrypt-Encrypt)和EEE(Encrypt-Encrypt-Encrypt)。在EDE模式中,数据首先被一个密钥加密,然后用第...

    des 及3des ecb pkcs5padding 加密 c++

    3DES实际上是对DES进行了三次加密:一次解密,两次加密。这样,密钥的总长度达到了168位,大大增强了安全性。尽管如此,随着计算能力的提升,3DES也逐渐显得不够安全,但仍在许多遗留系统中使用。 ECB(Electronic ...

    DES 3DES C代码

    3DES通过三次应用DES加密过程来提高安全性:EDE(加密-解密-加密)或DDE(解密-加密-解密)。这使得有效密钥长度增加到112位或168位,增强了算法的安全性,但同时降低了加密速度。 **C语言实现** 在C语言中,实现...

    3des算法代码 3des算法代码

    3DES(Triple DES)是一种基于DES(Data Encryption Standard)加密算法的加强版,它通过将DES加密过程重复三次,显著增强了原始DES的安全性。DES在20世纪70年代被广泛使用,但由于其56位的密钥长度,随着计算能力的...

    单DES双DES 3DES算法工具

    单DES双DES 3DES算法工具 ,支持不同密钥长度的DES算法,非常实用的小工具

    DES/3DES加密解密工具

    对数据进行单DES或者3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密

Global site tag (gtag.js) - Google Analytics