您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 《计算机信息安全》实验指导书
《计算机信息安全》实验指导书1实验一对称密钥密码加密解密实验实验学时:2学时实验类型:设计实验要求:必修一实验目的1、掌握对称密钥密码体制的基本概念;2、掌握对称密钥密码体制加密/解密的工作原理;3、重点掌握DES密码算法加密/解密的基本原理;4、通过用DES算法对实际的数据进行加密/解密运算来深刻了解DES的运行原理。二实验内容1、根据DES密码算法原理,用TurboC2.0或VisualC++6.0设计编写符合DES密码算法思想的加密/解密程序。三实验环境1、操作系统:Windows9x/NT/2000/XP2、编程软件:TurboC2.0或VisualC++6.0四实验原理1、DES算法工作的基本原理:DES是基于Feistel密码结构的分组密码,其入口参数有三个:key、data、mode。其中,key为加密/解密时使用的密钥;data为加密/解密的数据;mode为其工作模式:当模式为加密模式时,明文按照64位进行分组,形成明文分组,此时key用于对数据加密;当模式为解密模式时,key用于对64位的密文分组进行解密,以恢复明文。2、DES算法共进行16轮迭代操作,每轮中都使用相同的轮函数F,如下:F(Ri1,Ki)=p_box(S_boxes(Expand(Ri1)Ki))《计算机信息安全》实验指导书2整个算法的流程如图所示:DES加密算法流程图(一)、密钥生成1、生成种子密钥K使用密钥流生成器生成64位(8个字节)的种子密钥K,每个字节的第8位作为奇偶校验位,不参与实际运算中子密钥的生成过程。2、生成每一轮迭代中使用的子密钥ki。(1)根据PC-1置换进行种子密钥K的变换,舍弃64位种子密钥K中的8个奇偶校验位,得到56位的密钥。(2)将变换后的密钥分为左右两部分各28位,分别称为C0和D0,即PC-1(K)=C0D0。(3)生成16个子密钥ki,1≤i≤16。(i)将Ci、Di循环左移1位或2位,根据i值由“循环左移表”决定循环左移的位数,即计算Ci=LSi(Ci-1)和Di=LSi(Di-1),其中,LS表示循环左移。(ii)将循环左移后的Ci和Di作为一个56位的整体按置换表PC-2进行变《计算机信息安全》实验指导书3换,得到本轮所使用的48位子密钥ki,即ki=PC-2(CiDi)(1≤i≤16)。(二)、处理64位数据1、取得64位明文分组数据m,如果数据长度不足64位,应该将其扩展为64位(例如补零)。2、将64位明文分组数据m按初始置换表IP进行变换,获得64位的m0,并将m0分为左右两部分,前面32位记为L0,后面32位记为R0,即m0=IP(m)=L0R0。3、用16个子密钥ki(1≤i≤16)加密数据。所用变换公式为:F(Ri1,Ki)=p_box(S_boxes(Expand(Ri1)Ki))(1)将32位的Ri-1按扩展置换E扩展成48位;(2)异或Ri-1和ki;(3)将异或后的结果分为8个6位长的部分,第1位到第6位称为S[1],第7位到第12位称为S[2],依此类推,第43位到第48位称为S[8];(4)按S盒的变换原理变换所有的S[j],1≤j≤8。每一个S盒都是将输入的6位数据经过处理后转换成4位数据输出。(5)将S[1]到S[8]的输出组合成32位数据,按P置换进行变换,变换的结果就是轮函数F。(6)异或轮函数F和Li-1,结果就是Ri,即Ri=Li1F(Ri1,Ki)(7)Li=Ri1(8)循环执行轮函数F,直到K16被变换完成。4、第16轮迭代结束后左、右部分各是L16和R16,将左右部分交换,作为64位的预输出,即L17=R16,R17=L16。5、将变换后的R16L16按逆初始置换IP-1进行变换得到最后的结果,即为密文,即c=IP-1(R16L16)。五实验步骤本实验为设计型实验,要求学生自己根据实验原理,自行设计实验步骤,利用TurboC2.0或VisualC++6.0编程语言,实现对一个文件进行加密和解密。《计算机信息安全》实验指导书4六实验结果七思考题1、DES算法中大量的置换运算的作用是什么?2、DES算法中S盒变换的作用是什么?3、通过查阅相关资料了解目前破解DES算法的基本原理或方法。《计算机信息安全》实验指导书5实验二公钥密码加密解密实验实验学时:2学时实验类型:设计实验要求:必修一实验目的1、掌握公钥密码体制的基本概念;2、掌握公钥密码体制加密/解密的工作原理;3、重点掌握RSA密码算法加密/解密的基本原理;4、通过用RSA算法对实际的数据进行加密/解密运算来深刻了解RSA的运行原理。二实验内容1、根据RSA密码算法原理,用TurboC2.0或VisualC++6.0设计编写符合RSA密码算法思想的加密/解密程序。三实验环境1、操作系统:Windows9x/NT/2000/XP2、编程软件:TurboC2.0或VisualC++6.0四实验原理RSA算法基于数论构造,是迄今理论上最为完善的非对称密钥密码算法,它的安全性是建立在“大整数的质因子分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量则相当大。1、RSA的密钥产生过程如下:①选择两个保密的大素数p和q;②计算n=pq(公开);φ(n)=(p-1)(q-1)(保密);③随机选取一个整数e,满足1<e<φ(n)且gcd(φ(n),e)=1(公开);《计算机信息安全》实验指导书6④计算d,满足ed1(modφ(n))(保密);说明:d是e在模φ(n)下的乘法逆元。因为e与φ(n)互素,所以其乘法逆元一定存在。⑤得到一对密钥:公钥{e,n},私钥{p,q,d}。2、RSA的加密过程如下:①明文数字化,即将明文转换成数字串。②将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于等于log2n+1。③设第i个明文分组对应的数字为mi,对mi作加密运算。即将消息mi以加密指数e做乘方,并取模n,即:ci=miemodn(0≤min)④最后得到的密文C由所有长度相同的密文分组ci组成。3、RSA的解密过程如下:①将密文转换成数字串。②将以上数字串分段,使得每一段数字均小于n。③设第i个密文分组对应的数字为ci,对ci作解密运算。即将明文分组ci以解密指数d做乘方,并取模n,即:mi=cidmodn④最后得到的明文M由所有长度相同的明文分组mi组成。五实验步骤本实验为设计型实验,要求学生自己根据实验原理,自行设计实验步骤,利用TurboC2.0或VisualC++6.0编程语言,编程实现RSA算法。编程内容包括:1、用函数求出1~65535之间的全部素数。2、用函数生成一对RSA密钥。3、并利用该程序实现对一个文件进行加密和解密处理。《计算机信息安全》实验指导书7六实验结果1、加密运行《计算机信息安全》实验指导书82、解密运行说明:由于int型变量长度为16位,因此n最大只能小于65536。此程序只是对RSA算法进行验证,无法实现达到安全要求的数据位数。七思考题1、分析影响RSA密码体制安全的因素。2、分析比较RSA密钥的长度对加密、解密性能的影响。《计算机信息安全》实验指导书9实验三Hash函数加密解密实验实验学时:2学时实验类型:设计实验要求:必修一实验目的1、了解MD5算法的基本原理;2、熟悉MD5消息摘要算法的编程实现方法;3、通过用MD5算法对随机产生的数据进行哈希来深刻了解MD5的运行原理。二实验内容1、根据MD5算法原理,用TurboC2.0或VisualC++6.0设计编写符合MD5算法思想的消息摘要生成程序。三实验环境1、操作系统:Windows9x/NT/2000/XP2、编程软件:TurboC2.0或VisualC++6.0四实验原理1、MD5算法的作用是把一个任意长度的消息进行变化产生一个128bit的消息摘要。2、MD5算法除了要能够满足完成完整性验证必需的要求外,还要求运算效率要高。因此,MD5将消息分成若干个512bit的分组(大块)来处理输入的消息,且每一个分组又被划分成16个32bit的子分组(子块),经过一系列变换后,算法的输出由4个32bit分组构成,将这4个32bit分组连接后生成一个128bit的消息摘要。3、MD5算法以32位字运算为基础,加密算法有4轮,每一轮要进行16次迭代运算。●整个算法分为五个步骤。《计算机信息安全》实验指导书10步骤1:增加填充位在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448,即信息的字节长度扩展至N×512+448,N为一个正整数。填充的方法是:第一位为1,后面各位全为0。步骤2:附加消息长度值然后,再在填充后的报文后面附加一个64位的长度值,该长度值来源于填充前的原始报文长度。经过上述两步处理,当前报文的比特长度=N×512+448+64=(N+1)×512,即长度恰好是512的整数倍。按照512的长度为单位,将报文分割成Y0,Y1,…YN-1,每一个分组又可以表示成16个32位的字。步骤3:初始化MD缓冲区MD5有A,B,C,D四个32位的寄存器用作缓冲区,它们的初始值分别为A=01234567,B=89abcdef,C=fedcba98,D=76543210。步骤4:以512位的分组为单位处理消息从分组Y0开始,到最后一个分组YN-1,依次进行HMD5压缩运算。每个HMD5有两个输入(一个是128位的CV0,另一个是512位的分组Yi)和一个128位的输出。最开始的128位输入为4个32位寄存器的初始值,以后每个HMD5的输出作为下一个128位的输入。步骤5:输出最后一次进行HMD5后输出的128位值,即为所求的消息摘要MD。如图所示。D5压缩函数HMD5的处理过程消息100...00LY0Y1YiYN-1512位512位512位512位……HMD5512128IVHMD5512128…HMD5512128…HMD5512128CV1CViCVN-1128位的散列值L位原始消息长度(64位)填充位N´512位《计算机信息安全》实验指导书11●HMD5算法HMD5算法是MD5的关键函数,它是一个4轮循环,如图所示。HMD5算法(1)运算一开始,先将4个寄存器的初始值复制到另外4个变量中,A=a,B=b,C=c,D=d。(2)注循环右4轮,每一轮结构都很相似。在每一轮中进行16次迭代操作。每次操作对a,b,c,d中的3个做一次非线性函数运算。然后将所得结果加上第4个变量以及报文的一个子分组和一个常数T[i]。再将所得结果循环左移一个不定的数,并加上a,b,c,d中之一。即a=b+((a+g(b,c,d)+X[k]+T[i])S)。(3)以下是每次操作中用到的4个非线性函数(每轮一个)。(4)下面为每一轮16次操作中的4次操作,16次操作按照一定顺序进行。FF(a,b,c,d,M[j],S,T[i])表示a=b+(a+(F(b,c,d)+M[j]+T[i])S)《计算机信息安全》实验指导书12GG(a,b,c,d,M[j],S,T[i])表示a=b+(a+(G(b,c,d)+M[j]+T[i])S)HH(a,b,c,d,M[j],S,T[i])表示a=b+(a+(H(b,c,d)+M[j]+T[i])S)II(a,b,c,d,M[j],S,T[i])表示a=b+(a+(I(b,c,d)+M[j]+T[i])S)这里,“+”定义为mod232的模运算。M[j]表示在第n个512位数据块的第j个32位子分组,0≤j≤15。在第i步中,T[i]是32位的随机数源,它消除了输入数据中任何规律性的特征。五实验步骤本实验为一个设计性实验,要求学生自己根据实验原理,自行设计实验步骤,编程实现MD5算法。并利用该程序对一个文件或字符串进行处理,计算其Hash值。六程序清单1、头文件typedefstruct{UINT4state[4];/*数组state[4]用来存储MD5的四个寄存
本文标题:《计算机信息安全》实验指导书
链接地址:https://www.777doc.com/doc-5104412 .html