DES加密

摘要:
DES算法描述过程:1.DES算法使用56位的密钥及附加的8位奇偶校验位,产生最大64位的分组大小,输入64位明文,在64位密钥的控制下产生64位的密文。多重DES就是使用多个密钥利用DES对明文进行多次加密,多重DES可以增加密钥两。

DES算法描述过程:

DES加密第1张

1.DES算法使用56位的密钥及附加的8位奇偶校验位,产生最大64位的分组大小,输入64位明文,在64位密钥的控制下产生64位的密文。

2.DES首先利用初始置换IP对X进行换位处理,然后用图3.5的与密钥有关的16轮迭代变换,如此循环16此,最后经过逆初始置换IP-1的处理得到密文

初始置换IP用于对明文各位进行换位,为了打乱次序,经过初始置换后,明文X变为 X'=X1'X2'...X64'=X58X50X7,即明文X中的第58位变为X'中的第1位,同理,逆初始置换IP-1将16轮迭代后给出的64bit组进行置换。

DES加密第2张

DES第一轮加密过程:

DES加密第3张

公式表达:

Li=Ri-1

Ri=Li-1⨁f(Ri-1,Ki)

DES的i轮密钥Ki生成过程:

DES加密第4张

1.设输入的64bit密钥K=k1k2...k64,kiϵ{0,1},1≤i≤64,密钥K中有8位是奇偶校验位。

2.对于1≤i≤16,Ci=LSi(Ci-1),Di=LSi(Di-1)

3.Ki=PC_2(CiDi),PC_2位固定置换,选择置换PC_2如表3.4

DES加密第5张

加密函数f是整个DES算法的核心:

DES加密第6张

函数f以长度位32的bit串,A=R(32bit)作为第一个输入,J=K(48bit)作为第二个输入,产生的输出是32位的串,具体操作:

1.对于第一个变元A,给定的选择扩展函数E扩展位48bit的E(A)

DES加密第7张

2.EA异或J,并按照模2加运算,把结果写成连续的8个6位串

B=B1B2B3B4B5B6B7B8;

3.然后使用8个S盒,每个S串是一个4X16的矩阵,元素取0-15的整数

4.经过S盒后B缩减为4位。

5.最后P为固定置换  

DES加密第8张

6.8个s盒的输入/输出如图3.7  

DES加密第9张

7.S盒是DES算法中唯一的非线性的也是最安全的。

8.每个S盒都是6输入4输出

9.如果给定S盒的输入b0b1b2b3b4b5,其输出对应该矩阵的第L行n列对应数的二进制数

10.L为由b0b5形成的十进制表示,n为由b1b2b3b4形成的十进制表示

11.例如,S1的输入为011001,行选为01(即第1行),列选为1100(即第12列),行列交叉位置的数为9,其4位二进制数表示为1001,所以S1的输出为1001。

DES解密过程:

DES的解密过程与加密过程相同,但是在16此迭代中使用子密钥的次序相反

解密时第一次迭代使用子密钥K16,以此类推

具体过程可形式化地表示为Y=Y1Y2...Y64→R16L16,L0'=R16,R0'=L16。

DES加密第10张

DES的安全性:

DES的安全性依赖于密钥。

1.取反性特征:

对于明文组M,密文组C和主密钥K,如果C=DESk(M),则C逆=DESk逆(M逆)。

2.弱密钥与半弱密钥:

大多数密码体制都有某些明显的“坏密钥”,DES也是。对于K,K'ϵF256 ,若由K扩展45出来的加密子密钥为K1,K2,...,K15,K16,而由K'扩展出来的加密子密钥却是K16,K15,...,K2,K1, 即DESK-1=DESK' ,则称K与K'互为对合。

3.密文与明文、密文与密钥的相关性:

DES的编码过程可使每个密文比特都是所有明文比特和所有密钥比特的复杂混合函数,而要达到这一要求至少需要DES迭代5轮。卡方检验证明:DES迭代8轮以后,就可认为输出输入不相关

4.密钥长度:

DES的密钥太短,其长度为56bit,致使密钥量256≈1017,不能抵抗穷举攻击,事实证明的确如此。

三重DES:

DES的密钥长度被证明已经不能满足当前安全的要求,但是为了使用,简单的方案就是多次使用DES,比如三重DES。

多重DES就是使用多个密钥利用DES对明文进行多次加密,多重DES可以增加密钥两。

设k1,k2,k3是三个长度为56bit的密钥。 给定明文x,则密文为y=DESk3(DESk2-1(DESk1(x)))。给定密文 y,则明文为x=DESk1-1(DESk2(DESk3-1(y))) 在三重 DES中,如果k1=k2或k2=k3,则三重DES就退化为使用一个56bit单钥的单重DES。

三重DES的优点:

1.密钥长度从增加,克服穷举

2.增强了抗差分分析和线性分析

3.可以继续使用DES

4.成本小

免责声明:文章转载自《DES加密》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WSL2 配置及ubuntu18.04安装mysql8.0+Cesium深入浅出之阴影贴图【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Crypto++入门学习笔记(DES、AES、RSA、SHA-256)

最先附上下载地址 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后对一些数据进行一些加密解密的操作。 笔者之前没接触过任何加密解密方面的知识(当然,把每个字符的ASCII值加1之流对明文进行加密的“趣事”还是干过的,当时还很乐在其中。),甚至一开始连Crypto+...

RAS、AES、DES加密

--------------------------------------------------------------------------------------------------------------- 为什么会了解加密的这些东西呢?说来很囧的………… 异想天开的想开发一个微信自动加好友软件,卖给微商们,自己也赚点小钱。。。然后就开始搞...

DES加密/解密类。

用法: string s = DESEncrypt.Encrypt("123456");//加密 s = DESEncrypt.Decrypt(s);//解密 /// <summary> /// DES加密/解密类。 /// </summary> public class DESEncrypt {...

常见的加密方式总结

对称加密 DES DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法,加密速度快,但是容易破解安全性低。 3DES(Triple DES) 是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高,加强版DES。 (DES算法比较简单,容易破解已不建议使用) AES(微信用的就是这种加密方式)...

DES与3DES

DES 固定8字节的plain加密得到8字节的cipher EBC模式:对plain进行分组,不足8字节的补00或ff CBC模式:(1)对plain进行8字节分组,P1,P2,……,Pn,不足8字节的用指定的PADDING数据补位; (2)初始化向量 l = 0x00; (3)E(D1 ^l) = C1 E(D2 ^ C1) = C2 …… E(Dn ^...

DES加密模式详解

DES加密模式详解 http://www.cnblogs.com/Lawson/archive/2012/05/20/2510781.html http://www.blogjava.net/wayne/archive/2011/05/23/350879.html 加密算法常见的有ECB模式和CBC模式: ECB模式:电子密本方式,这是JAVA封装的DE...