1 / 11
文档名称:

S—DES算法实现的实验报告.doc

格式:doc   大小:175KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

S—DES算法实现的实验报告.doc

上传人:aena45 2020/7/1 文件大小:175 KB

下载得到文件列表

S—DES算法实现的实验报告.doc

文档介绍

文档介绍:周胜安(200620109286)计算机科学与工程研一(2)班S-DES加密算法的JAVA实现一、实验要求(1)简述S-DES的加密算法的主要思想(2)实现的主要步骤,及各个步骤的主要思想及示意图(3)给出程序的分析,运行结果和程序的效率分析(4)通过编程实现S-DES加密算法,了解DES加密的原理,也加深对现代对称密码的理解。二、算法思想•加密算法的数学表示:密文=IP-1fk2(SW(fk1(IP(明文)))))其中K1=P8(移位(P10(密钥K)))K2=P8(移位(移位(P10(密钥K))))•解密算法的数学表示:明文=IP-1(fk1(SW(fk2(IP(密文)))))S-DES加密方法示意图:S-DES算法涉及加密、密钥产生、解密三个部分。流程图(每个函数的算法见源代码)三、算法流程框图、各模块说明实验是用JAVA实现的(1)密钥的产生密钥产生的示意图:密钥的产生算法涉及五个函数定义初始置换P10其中P10的定义为:P10(k1,k2,…,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6)(2)LS-1操作:对密钥的左右两组循环左移一位(密钥分成5位一组,共2组)(3)P8置换产生Key1。其中P8的定义为:P8(k1,k2,…,k10)=(k6,k3,k7,k4,k8,k5,k10,k9)(4)LS-2操作::对密钥的左右两组循环左移两位.(5)P8置换产生Key2(2)S-DES的加密过程示意图:加密算法涉及五个函数:(1)初始置换IP(initialpermutation)。其中P8的定义为:IP(k1,k2,…,k8)=(k2,k6,k3,k1,k4,k8,k5,k7)(2)复合函数fk,它是由密钥K确定的,具有置换和代替的运算。函数fk,是加密方案中的最重要部分,它可表示为:fk(L,R)=(LÅF(R,SK),R)其中L,R为8位输入,左右各为4位,F为从4位集到4位集的一个映射,并不要求是1-1的。SK为子密钥。对映射F来说:首先输入是一个4-位数(n1,n2,n3,n4),第一步运算是扩张/置换(E/P)运算:E/P 41232341事实上,它的直观表现形式为:n4n1 n2n3n2n3 n4n18-bit子密钥:K1=(k11,k12,k13,k14,k15,k16,k17,k18),然后与E/P的结果作异或运算得: n4+k11n1+k12 n2+k13 n3+k14 n2+k15n3+k16 n4+k17 n1+k18把它们重记为8位:P0,0P0,1P0,2 P0,3P1,0P1,1P1,2P1,3上述第一行输入进S-盒S0,产生2-位的输出;第二行的4位输入进S盒S1,产生2-位的输出。两个S盒按如下定义:S盒按下述规则运算:将第1和第4的输入比特做为2-bit数,指示为S盒的一个行;将第2和第3的输入比特做为S盒的一个列。如此确定为S盒矩阵的(i,j)数。例如:(P0,0,P0,3)=(00),并且(P0,1,P0,2)=(10)确定了S0中的第0行2列(0,2)的系数为3,记为(11)输出。由S0,S1输出4-bit经置换 P4243 1它的输出就是F函数的输出。(3)转换函数SW:将输入的左4位与右4位交换(4)初始置换IP的逆置换IP-1其中P8的定义为:P8(k1,k2,…,k8)=(k4,k1,k3,k5,k7,k2,k8,k6)四、程序使用说明(1)安装JDK 从http://Java./下载jdk-1_5_0_04-windows-i586- 安装到指定路径,我选择D:\ 配置环境变量: Java_HOME:D:\ PATH:D:\\bin; CLASSPATH:.;D:\\lib\;D:\\jre\lib\(2)将附件的复制到硬盘中如D:(其中””为原代码;“”为JAVA执行文件)(3)运行程序进入命令行方式(如D:\)输入JAVASimpleDes(如:D:\>JAVASimpleDes)五、程序运行结果及分析程序运行如图所示:程序运行过程:输入任意字符序列:qwsdfruip(不失一般性,本程序只对前8个加密)程序给出字符二进制序列:01110001(q)01110111(w)01110011(s)01100100(d)01100110(f)01110010(r)01110101(u)01101001(i)输入密钥:hj本程序根据前2个字符生成一个10位二进制密钥(每个字符取5位)如:0101010001本程序生成第一个密钥:10110010本程序生成第二个密钥:01