当前位置:文档之家› 简化DES加密算法

简化DES加密算法

数据加密标准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)子密钥生成
设密钥为1010000010 ,则子密钥的生成过程如图6.20所示。

4、加密过程举例
设8bit明文为11110011,使用前例中的子密钥进行加密,其过程如图6.21所示.。

相关主题