对于 3DES 的理解

本贴最后更新于 2408 天前,其中的信息可能已经时异事殊

文一:DES

概述

IBM 公司于 1975 年研究成功并公开发表,1977 年 1 月,美国政府颁布:采纳 IBM 公司设计的方案作为非机密数据的正式数据加密标准(Data Encryption Standard)。
5314e2e0007443dab0879ab0198598a0.png

JAVA 中的实现

Cipher 类为加密和解密提供密码功能。它构成了 Java Cryptographic Extension (JCE) 框架的核心。
为创建 Cipher 对象,应用程序调用 Cipher 的 getInstance 方法并将所请求转换 的名称传递给它。还可以指定提供者的名称(可选)。

转换 是一个字符串,它描述为产生某种输出而在给定的输入上执行的操作(或一组操作)。转换始终包括加密算法的名称(例如,DES),后面可能跟有一个反馈模式和填充方案。
转换具有以下形式:
“算法/模式/填充”或“算法”(后一种情况下,使用模式和填充方案特定于提供者的默认值)。例如,以下是有效的转换:

Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");

文二:3DES/Triple DES/DESede

概述

3DES(或称为 Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次 DES 加密算法。由于计算机运算能力的增强,原版 DES 密码的密钥长度变得容易被暴力破解;3DES 即是设计用来提供一种相对简单的方法,即通过增加 DES 的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

算法原理

使用 3 条 56 位的密钥对 数据进行三次加密。3DES(即 Triple DES)是 DES 向 AES 过渡的加密算法(1999 年,NIST 将 3-DES 指定为过渡的加密标准)。

其具体实现如下:设 Ek()和 Dk()代表 DES 算法的加密和解密过程,K 代表 DES 算法使用的密钥,P 代表明文,C 代表密文,这样:

3DES 加密过程为:C=Ek3(Dk2(Ek1(P)))

3DES 解密过程为:P=Dk1(EK2(Dk3(C)))

猜测 Java 中给 3DES 取名为 DESede 的原因或许是因为算法原理是 e d e

JAVA 中的实现

Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
Cipher cipher = Cipher.getInstance(DESede);
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3165 引用 • 8206 回帖 • 1 关注
  • 3des
    1 引用 • 8 回帖
  • des
    1 引用 • 8 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...