DES加密算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据加密标准DES(Data Encryption Standard)算法是由美国IBM公司研制的一种分组密码算法,一种迭代分组密码。

DES是一种使用最为广泛的加密算法,虽然DES出现后又产生了许多常规加密算法,但DES仍是此类算法中最重要的一种。

在正式讨论DES算法之前,为了更好的理解算法的实际工作过程,我们先来看一个简化的DES算法,以此加深对DES算法的理解。

一、简化的DES加密算法

简化的DES加密算法是以8bit的明文分组和10bit密钥作为输入,产生8bit 密文分组作为输出。

1、加密流程

简化的DES算法基本加密流程如图6.9所示

图6.9 简化的DES的加密过程

2、加密算法构成:

函数、SW置换函简单DES的加密算法包括4个基本函数:初始置换函数IP、f

k

数、逆置换函数IP-1。

(1)初始置换函数IP

初始置换IP是将明文中数据的排列顺序按一定的规则重新排列,而生成新的数据序列的过程。如图6.10所示:

8bit原数据位置 1 2 3 4 5 6 7 8

【IP置换】

经IP置换后的数据位置 2 6 3 1 4 8 5 7

图6.10 简单DES的初始置换

例:设8bit数据为11110011 ,则初始置换后的结果为:

函数f k函数是多个置换函数和替代函数的组合函数。f k函数首先将输(2) f

k

入它的8bit数据进行分组,分成左4位和右4位,然后对右组的4位数据进行E/P扩展置换运算,接着将扩展置换所得的8bit数据与子密钥进行异或运算,再将异或运算所得结果通过S盒输出,再将通过S盒输出的数据进行P4置换,最后将经过P4置换后的数据与输入f

函数经分组的左4位数据进行异或运算。

k

F(R,SK)函数是f k函数的核心函数,其中SK是子密钥。F(R,SK)函数的运算方法如下:f k(L,R)=(L⊕F(R,SK),R)L:输入的左边4位分组 R:输入的右边4位分组⊕:逐位异或

①扩展/置换是将4bit输入数据经过置换和扩展而产生8bit数据的算法。

如图6.11所示:

E/P扩展置换前 1 2 3 4

E/P扩展置换

E/P扩展置换后 4 1 2 3 2 3 4 1

图6.11 简单DES的扩展/置换

②经扩展置换所得的8位数据与8位子密钥SK进行逐位异或运算

异或运算规则如图6.12所示。

图6.12 异或运算

即相同数据异或运算的结果为0,不同数据异或运算的结果为1。例:

A:1 1 1 0 1 0 1 1

B:1 0 1 0 0 1 0 0

异或运算的结果:0 1 0 0 1 1 1 1

③S盒输出

简化DES算法使用两个S盒S0和S1。如图6.13所示。其运算方法是将输入S 盒的8bit数据从左至右按顺序分成左右两组,每组各4bit,左4bit数据输入S0盒,右4bit输入S1盒,如输入S盒的01001111分成0100和1111两组,对于每一组的第1bit和第4bit作为一个2bit数据并转化成一个十进制数据,这个数据用来指定S盒的一行。第2bit和第3bit作为一个2bit数据并转化成一个十进制数据,这个数据用来指定S盒的一列。将对应S盒中该行该列的十进制数据转化成二进制数据,即为S盒的2bit输出数据。如:输入S0盒的数据为0100,则P1为0,P2为1,P3为0,P4为0,所以P1P4即00转化为0指定S0盒的第一行,P2P3即10转化为2指定S0盒的第三列,所得数据为3,转化为二进制为11,即从S0盒输出的2bit数据为11;输入S1盒的数据为1111,则P5为1,P6为1,P7为1,P8为1,所以P5P8即11转化为3指定S1盒的第四行,P6P7即11转化为3指定S1盒的第四列,所得数据为3,转化为二进制为11,即从S1盒输出的2bit数据为11,。因此通过S盒输出的数据为1111。

S0盒 S1盒

1 0 3

2 0 1 2 3

3 2 1 0 2 0 1 3

0 2 1 3 3 0 1 0

3 1 3 2 2 1 0 3

图6.13 S盒

图6.14 S盒运算

④P4置换

由S0和S1产生的4bit数据经P4置换,产生4bit数据的输出。P4置换的方法如图6.15所示。

置换前数据位置: 1 2 3 4

P4置换

置换后数据位置: 2 4 3 1

图6.15 P4置换

(3)交换函数(SW)

交换函数SW是将8bit输入数据的左四位与右四位交换位置之后产生8bit数据的输出。其运算方法如图6.16所示。

交换前:1011 1101

交换后:1101 1011

(4)逆置换函数IP-1

逆置换函数IP-1是将8bit输入数据置换为8bit数据输出。其运算方法如图6.17所示。

置换前位置: 1 2 3 4 5 6 7 8

IP-1 置换

置换后位置: 4 1 3 5 7 2 8 6

图6.17 逆置换函数IP-1

3、子密钥生成

简化DES的密钥是使用一个发送方和接收方共享的10bit密钥。运算中使用的两个8bit子密钥就是通过这个10bit密钥生成。

输入:10bit密钥

输出:两个8bit子密钥(K1和K2)

(1)子密钥生成流程

简化DES的两个8bit子密钥的生成过程如图6.18所示。

(2)算法构成

简化DES的子密钥生成算法主要由置换函数P10和置换函数P8这两个置换函数加上【循环左移】构成。设10bit数据从左到右依次为(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10)则置换方式如图6.19所示。

P10(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6,)

P8(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10)=(k6,k3,k7,k4,k8,k5,k10,k9)

P10置换前数据位置:1 2 3 4 5 6 7 8 9 10

P10置换

P10置换后数据位置:3 5 2 7 4 10 1 9 8 6

P8置换前数据位置:1 2 3 4 5 6 7 8 9 10

P8置换

P8置换后数据位置: 6 3 7 4 8 5 10 9

图6.19 P10和P8置换

(3)子密钥生成

相关文档
最新文档