信息安全实验报告
题目DES算法
姓名学号
专业年级计算机科学与技术2014级(1)班指导教师
2016年12 月10日
一、实验目的
了解DES加密算法及原理,掌握其基本应用。
二、实验容
DES加密算法的JAVA实现
三、实验原理
DES算法由加密、子密钥和解密的生成三部分组成。
现将DES算法介绍如下。
1.加密
DES算法处理的数据对象是一组64比特的明文串。
设该明文串为m=m1m2…m64 (mi=0或1)。
明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。
其加密过程图2-1所示:
图2-1:DES算法加密过程
对DES算法加密过程图示的说明如下:
待加密的64比特明文串m,经过IP置换(初始置换)后,得到的比特串的下标列表如下:
表2-1:得到的比特串的下标列表
58 50 42 34 26 18 10 2
IP
60 52 44 36 28 20 12 4
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
该比特串被分为32位的L0和32位的R0两部分。
R0子密钥K1(子密钥的生成将在后面讲)经过变换f(R0,K1)(f变换将在下面讲)输出32位的比特串f1,f1与L0做不进位的二进制加法运算。
运算规则为:
f1与L0做不进位的二进制加法运算后的结果赋给R1,R0则原封不动的赋给L1。
L1与R0又做与以上完全相同的运算,生成L2,R2……一共经过16次运算。
最后生成R16和L16。
其中R16为L15与f(R15,K16)做不进位二进制加法运算的结果,L16是R15的直接赋值。
R16与L16合并成64位的比特串。
值得注意的是R16一定要排在L16前面。
R16与L16合并后成的比特串,经过置换IP-1(终结置换)后所得比特串的下标列表如下:
表2-2:置换后所得比特串的下标列表
IP-1 40 8 48 16 56 24 64 32
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
经过置换IP-1后生成的比特串就是密文e。
变换f(Ri-1,Ki):
它的功能是将32比特的输入再转化为32比特的输出。
其过程如图2-2所示:
图2-2:将32比特的输入再转化为32比特的输出
f变换说明:输入Ri-1(32比特)经过变换E(扩展置换E)后,膨胀为48比特。
膨胀后的比特串的下标列表如下:
表2-3:膨胀后的比特串的下标列表
膨胀后的比特串分为8组,每组6比特。
各组经过各自的S盒后,又变为4比特(具体过程见后),合并后又成为32比特。
该32比特经过P变换(压缩置换P)后,其下标列表如下:
表2-4:压缩置换P后的下标列表
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
经过P变换后输出的比特串才是32比特的f(Ri-1,Ki).
S盒的变换过程: 任取一S盒。
见图2-3:
图2-3
在其输入b1,b2,b3,b4,b5,b6中,计算出x=b1*2+b6,
y=b5+b4*2+b3*4+b2*8,再从Si表中查出x 行,y 列的值Sxy。
将Sxy化为二进制,即得Si盒的输出。
(S表如图2-4所示)
图2-4 四、实验结果
五、实验总结
此次课程设计,不仅使自己对信息安全有了初步了解,同时使自己编程能力有了较大的提高。
基本掌握了JAVA结构化程序设计。
并且熟悉掌握了密码学中一个重要的算法—DES密码算法,并且通过JAVA工具编程实现。
六、代码附录
略。