DES加密算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)子密钥生成