对称密码学:02 数据加密标准(DES)

本文详细介绍了DES(数据加密标准)算法,包括初始和末尾置换、費斯妥函数(F函数)的四个步骤:扩展置换、异或、S盒和P盒置换。此外,还提到了子密钥的生成过程和DES算法的C语言实现。DES是一种块密码,以64位为单位进行加密,核心安全性依赖于非线性的S盒。
摘要由CSDN通过智能技术生成

密码学

什么是DES

数据加密标准,即DES(Data Encryption Standard)。在发音时,DES作为缩写按字母来读的话:(/ˌdiːˌiːˈɛs/);作为一个单独的词来读的话:(/ˈdɛz/)。

对称算法有两种类型:块密码和流密码。而DES算法就是采用了块密码,每一次处理固定长度输入块,每一个输入块,有生成了一个输出块。对于DES来说,它的块长度为64位。

DES算法结构

DES算法要进行16次相同过程的处理,叫做“回次”。而在初始和结尾处各有一次置换的处理,分别称为IP和IP-1(也叫做FP,即反函数).

DES-main-network-coskimo

初始置换IP

DES会对64位明文分组操作。这64位的明文通过初始置换IP产生64 位置换后的置换文x0,置换表格如下

58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7

初始置换把明文的第58位换到了第1位,把50放到了第2位,后面依次类推。

 

紧接着,这个64位的数据块,被分成2个32位的半块,并且分别处理;这种交叉的方式叫做費斯妥结构。斯妥结构可以保证加密和解密过程可以足够相似,而唯一的区别在于子密钥在解密是逆向的,其余的一样。这种设计理念简化了算法。

图片中的⊕符号表示异或(XOR)处理。F函数把数据半块和某一个子密钥进行处理。然后,一个F函数的输出与另一个半块异或,在把原来的半块组合交换顺序。进入后面一回的处理。在完成最后一次回次后,两个半块交换顺序。

費斯妥函数(F函数)

DES-f-function

1. 扩展置换(E)

把数据的友半块从32位扩展到48位。扩展置换表如下

32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1

32位的半块扩展到了48位后,以8个6位的块输出。每块包含4位对应的输入位,加上两个邻接的块中紧邻的位。

2. 异或

扩展后的输出与一个密钥通过异或结合。

3. S盒

在和子密钥混合后48位被分成8份6位的块,然后使用S盒置换处理。8个S盒都使用查找表方式提供非线性的变换把6位输出变成了4位的输出。S盒提供了DES的核心安全性—如果没有S盒,密码会是线性的,很容易破解。

S盒的具体置换如下:某一个Si盒的6位输入的第一位和第六位形成了一个2位的二进制数(即0~3),对应表中的某一行;而中间4位构成的4位二进制数(即0~15)对应表中的某一列(PS:行和列从0开始计数)。

S盒如下

S1
  x0000x x0001x x0010x x0011x x0100x x0101x x0110x x0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0yyyy1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1yyyy0 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
1yyyy1 15 12 8 2 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值