DES算法详解及实现(C语言)

其他现代密码学算法详解及实现见专栏合集~

DES算法原理

  • 加密过程

(i)算法结构

**概述:**将明文分为64位的分组,首先对64位码做初始IP置换,再进行16论迭代变换,其中包括ESP三种运算,最后进行逆初始置换。

1.初始置换IP

将64个明文位的位置进行置换,得到一个乱序的64位明文组,然后分成左右两端,每段位32位,左边用L0表示,右边用R0表示,并将R0送入迭代变换。

2. 迭代变换F

I**.选择扩展运算E**

(为了和48位的密钥运算而扩展)

四字节一组,组前位=上组最后一位,组后位=下组的第一位。

II**.密钥加密运算**

将子密钥产生器产生的48位子密钥k与选择扩展运算E输出的48位数据按位做异或运算。

III**.选择压缩运算S(S盒)**

(实现非线性混淆,增加明文空间复杂度,因为密文需要是64位,所以必须压缩回32位)

将加密过后的48位数据自左向右分成8组,每组6位。然后并行送入8个S盒,每个S盒为一个非线性代换网络。6进4出,头尾两位的二进制->行数,中间四位的二进制->列数&#

猜你喜欢

转载自blog.csdn.net/m0_67390963/article/details/125098864