DES加密

DES加密

一. DES加密流程

image

1. 初始置换

根据初始置换表,对输入的64位的明文按照比特位数进行替换。

即加密和解密的时候应该是一张8*8的表来进行替换。

2. f运算

f运算的参数为每一轮的密钥k和上一轮的R。

image

对于32位的输入数据首先经过拓展变换得到48位的数据,然后与48位的密钥异或,所得到的结果按照6比特的依次分为8个分组。将8个6比特的数据分别作为8个S盒的输入,得到8个4比特共32比特的输出,最后对输出的结果做置换变换P,得到f函数的输出。

(1) S盒代替

  1. 我们前面扩展置换后得到的R0是48位的数据,我们的S盒有8个,那么我们就需要将得到的R0平均分为8组,每组对应一个S盒。
  2. 每一组的数据长度为6位,假设第一组的二进制数据为:“100110”
  3. 那么,我们取第一位与最后一位,组成十进制行数:“10”=2
  4. 然后取中间四位,组成十进制列数:“0011”=3
  5. 那么,在对应的S1盒中,取2行3列的数据(第3行第4列):8
  6. 再将取得的数字转换为2进制:“1000”
  7. 将这个得到的4位二进制数据,代替原来第一组的6位数据,这样一来,等8个S盒全部代替完毕,我们就得到32位的数据。

(2)P盒置换

image

P盒是一个代替的过程,当进行替换的时候基于P盒的下标进行替换,比如a对应16就是第16个即P.

3. 密钥生成算法

image

(1). 压缩置换1

image

(2). 循环左移

每一轮循环左移的位数是不同的:

image

(3). 压缩置换2

image

二. DES加密算法

DES加密算法实现: DES加密算法实现(C++) (gitee.com)

三. 参考文章

  1. DES加密算法解析与实现 - luogi - 博客园 (cnblogs.com)
posted @ 2024-03-22 09:08  ONE_ZJ  阅读(19)  评论(0编辑  收藏  举报