Bootstrap

最简单最详细最贴心的DES算法加密过程,步骤超详细

密码学

DES加密的过程

刚学DES这个加密算法的时候,我在网上找了教程,但是由于网上的教程太过于详细,文字又多,而且比较抽象,只是讲了方法,没有个具体的例子教程,所以有时候自己看了几遍也看不懂DES是怎么加密,所以在这里我用一个例子,一步一步来看一下DES的加密过程,也更容易理解。

DES的加密过程如下图所示,其中那16轮迭代,每一轮将64分为左右两部分,分别进行E-扩展运算,(E-扩展运算之后生成的48比特与子密钥k进行异或)S-盒运算,P-置换包括

 

 

 

子密钥生成过程如下

将明文进行IP置换,得

下面以右半部分R0为例.

将R0进行E-扩展,将32比特扩展成48位,得

因为生成的48位数要和生成的子密钥进行异或,所以接下来看第一轮的子密钥如何生成

子密钥生成

 因为奇偶校验位不影响,所以变成这样方便看一些,括号里面的是奇偶校验位

接下来进行置换选择PC-1

然后进行位移,左移一位

然后进行置换选择PC-2,得到48位

然后用生成的子密钥k1和经过E-扩展运算之后的R0进行异或运算,得到,将这48位数分成8组

将这48比特数通过S盒置换后输出32比特

再将这32比特进行P-置换,得到R0

 

同理可得到L0

将得到的L0和R0组合就是第一轮迭代的结果

然后用这个L0和R0进行第二轮迭代,总共16轮

特别注意的是,再最后一轮迭代完成后,要交换L0和R0的位置

得到R0L0,对这个R0L0进行初始逆置换IP-1,

就是我们想要的密文了

;