




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
密码学课程设计班级: 姓名: 学号: 指导教师: 2011.6中国矿业大学计算机学院 密码学课程设计目录密码学课程设计11.实验一 实现一个多表古典加密和解密程序11.1实验目的11.2实验要求11.3实验内容11.4古典加密方法11.5 程序代码11.6 结果分析31.7 实验总结32.实验二 DES算法的实现42.1实验目的42.3实验内容42.4 DES对称加密算法42.5 程序代码62.6结果分析82.7实验总结83.实验三 实现一个大素数生成算法93.1实验目的93.2实验要求93.3实验内容93.4 Miller-Rabin素性测试法93.5 程序代码103.6 结果分析103.7 实验总结114. 结束语11 1 1.实验一 实现一个多表古典加密和解密程序1.1实验目的 掌握多表古典加密方法。1.2实验要求 能用高级语言实现古典加密方法。1.3实验内容 多表古典加密方法主要有Playfair体制、Vigenere体制、Beaufor体制、Vernam体制和Hill体制,用高级语言实现其中一种体制的加密和解密算法。1.4古典加密方法 古典加密方法分为单表加密和多表加密。古典密码编码方法有置换,代替,加法 。把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码。最简单的置换密码是把明文中的字母顺序倒过来,然后截成固定长度的字母组作为密文。 乘积和迭代是多种加密方法混合使用,对一个加密函数多次迭代。 单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。构造多个密文字母表,在密钥的控制下用相应密文字母表中的一个字母来代替明文字母表中的一个字母。一个明文字母有多种代替。 Vigenere密码是著名的多表代替密码。 所以本次试验我选择做的就是 Vigenere密码。 1.5 程序代码#include#include#include#define MAX_LEN 1024 #define LETTERS 26 void encrypt_vigenere(char* plain, char* key, char* cipher) int max = strlen(plain)-1, d = strlen(key)-1, i; for(i=0;imax;i+) cipheri = a+(plaini -a + keyi % d - a+ LETTERS) % LETTERS; /adding LETTERS to avoid the result is negative cipheri = 0;void decrypt_vigenere(char* cipher, char* key, char* plain) int max = strlen(cipher), d = strlen(key)-1, i; for(i=0;i Please input the key: n); fgets(key,sizeof(key),stdin); printf(n- Please input the plain text: n); fgets(plain,sizeof(plain),stdin); encrypt_vigenere(plain,key,cipher); printf(n- The cipher text is : n); printf(%sn,cipher); decrypt_vigenere(cipher, key, plain); printf(n-The original message is: n); printf(%sn,plain);1.6 结果分析首先在程序执行时的提示下,输入密钥,接下来输入要加密明文,程序执行,可以产生加密后的密文,并自动解密出原来的明文。顺利执行加密和解密过程。1.7 实验总结古典多表密码有多种体质,这次试验我选择的是Vigenere体制。经过对加密算法的实现,我对古典加密算法的模式,过程和原理有了更深入的了解。多表古典密码通过构造多个对应明文的密文字母表,在密钥的控制下使用相应的密文字母表中的某个字母来代替明文字母表中的一个字母。达到隐藏明文的目的。解密的时候对这个过程进行逆操作,得到明文。一个明文字母有多种代替。而 Vigenere密码就是著名的多表代替密码。而且通过编码,又练习了我C+操作的水平。2.实验二 DES算法的实现2.1实验目的 握分组加密算法的设计与实现方法。2.2实验要求 用高级语言实现实现DES加密和解密算法。2.3实验内容 DES是由初始变换、乘积变换和逆初始变换构成,乘积变换是DES算法的核心。首先用代码实现这几个变换,然后组合成DES加密算法。由于DES解密算法与加密算法相同只是子密钥使用次序不同,因此可简单地由加密算法实现解密算法。2.4 DES对称加密算法 对称加密算法有时又叫做传统密码算法,加密密钥可以从解密密钥中推导出来,解密密钥也可以从加密密钥中推导出来。在大多数的对称算法中,加密密钥和解密密钥是相同的,因此也成为秘密密钥算法或者单密钥算法。它要求发送发和接收方在安全通信之前先商定一个密钥。对称算法的安全性依赖于密钥,所以密钥的保密性对通信至关重要。对称加密算法主要有分组加密和流加密两类。分组加密是指将明文分成固定商都的组,用同一密钥分别对每一组加密,输出固定长度的密文,典型代表:DES、3DES、IDEA。DES的加密流程:DES的加密过程可分为加密处理,加密变换和子密钥生成几个部分组成。 1.加密处理过程 (1)初始变换。加密处理首先要对64位的明文按表1所示的初始换位表IP进行变换。表中的数值表示输入位被置换后的新位置。例如输入的第58位,在输出的时候被置换到第1位;输入的是第7位,在输出时被置换到第64位。(2)加密处理。上述换位处理的输出,中间要经过16轮加密变换。初始换位的64位的输出作为下一次的输入,将64位分为左、右两个32位,分别记为L0和R0,从L0、R0到L16、R16,共进行16轮加密变换。其中,经过n轮处理后的点左右32位分别为Ln和Rn,则可做如下定义: Ln=Rn-1 Rn=Ln-1 其中,kn是向第n轮输入的48位的子密钥,Ln-1和Rn-1分别是第n-1轮的输出,f是Mangler函数。 (3)最后换位。进行16轮的加密变换之后,将L16和R16合成64位的数据,再按照表2所示的最后换位表进行IP-1的换位,得到64位的密文,这就是DES算法加密的结果。2.加密变换过程 通过重复某些位将32位的右半部分按照扩展表3扩展换位表扩展为48位,而56位的密钥先移位然后通过选择其中的某些位减少至48位,48位的右半部分通过异或操作和48位的密钥结合,并分成6位的8个分组,通过8个S-盒将这48位替代成新的32位数据,再将其置换一次。这些S-盒输入6位,输出4位。3.子密钥生成过程 钥通常表示为64位的自然数,首先通过压缩换位PC-1去掉每个字节的第8位,用作奇偶校验,因此,密钥去掉第8、16、2464位减至56位,所以实际密钥长度为56位,而每轮要生成48位的子密钥。 4.解密处理过程 从密文到明文的解密过程可采用与加密完全相同的算法。不过解密要用加密的逆变换,就是把上面的最后换位表和初始换位表完全倒过来变换。这里不再赘述。2.5 程序代码由于代码过长,此处只列出部分关键代码。void CDES:EncryptKey(char *key) printf(n原始密钥: %s,key); m_dwlKey=ProcessByte(unsigned char*)key,TRUE);/ PrintBit(m_dwlKey); m_dwlKey=PermuteTable(m_dwlKey,dwlKey_PC_1,56);/ PrintBit(m_dwlKey); Generate_K();/ printf(n*n);unsigned char * CDES:EncryptData(unsigned char *block) unsigned char *EncrytedData=new unsigned char(15); int i; printf(n原始数据: %sn,block); m_dwlData=ProcessByte(block,0);/ PrintBit(m_dwlData); m_dwlData=PermuteTable(m_dwlData,dwlData_IP,64); EncryptKernel();/ PrintBit(m_dwlData); DWORDLONG bit6=m_dwlData; for( i=0;i=6; EncrytedData11=0; printf(n加密之后: %s,EncrytedData); for( i=0;i=8; EncrytedData8=0; return EncrytedData;void CDES:EncryptKernel(void) int i=1; DWORDLONG L17,R17,B9,EK,PSB; L0=m_dwlData32; R0=m_dwlData&0xffffffff; for(i=1;i=16;i+) Li=Ri-1; Ri-1=PermuteTable(Ri-1,dwlData_Expansion,48); /Expansion R EK=Ri-1m_dwl_Ki; /E Permutation PSB=Generate_B(EK,B); /P Permutation Ri=Li-1PSB; R1632; L16=dataPara&0xffffffff; for(i=16;i=1;i-) Ri-1=Li; Li=PermuteTable(Li,dwlData_Expansion,48); /Expansion L EK=Lim_dwl_Ki; /E Permutation PSB=Generate_B(EK,B); /P Permutation Li-1=RiPSB; L0=32; dataPara=L0|R0; dataPara=PermuteTable(dataPara,dwlData_FP,64);/ PrintBit(dataPara); for(i=0;i=8; DescryptedData8=0; printf(n加密之后: %sn,DescryptedData); return DescryptedData; 2.6结果分析代码通过des分组密码,对明文顺利进行了加密和解密。2.7实验总结通过本次试验对DES加密算法的实现,我熟悉了分组密码的工作模式和流程,对其解密过程也有了更清楚的了解。DES算法是通过s盒与p盒来实现对明文的加密,S盒和P盒的实现使加密算法比较唱。编程实现的时候,首先要了解每个部分各个函数的作用,然后按顺序进行实现,最后得到完整的算法。通过试验增加了我对DES加密算法的认识,还锻炼了我动手实现代码的能力。3.实验三 实现一个大素数生成算法3.1实验目的 进一步掌握大素数分解的一般原理和实现方法。3.2实验要求 能用间接方法实现大素数分解。3.3实验内容 用代码实现Solovay-Strassen素性测试法或Miller-Rabin素性测试法。3.4 Miller-Rabin素性测试法 米勒和拉宾的素性测试方法是在费马定理的基础上进行研究的。新的测试基于下面的定理:如 果p是素数,x是小于p的正整数,且x2 mod p = 1,那么要么x=1,要么x=p-1。这是显然的,因为x2 mod p = 1相当于p能整除x2-1,也即p能整除(x+1)(x-1)。由于p是素数,那么只可能是x-1能被p整除(此时x=1)或x+1能被p整除(此时x =p-1)。 其基本方法是不断地提取指数n-1中的因子2,把n-1表示成d*2r(其中d是一个奇数)。那么我们需要计算的东西就 变成了a的d*2r次方除以n的余数。于是,a(d * 2(r-1)要么等于1,要么等于n-1。如果a(d * 2(r-1)等于1,定理继续适用于a(d * 2(r-2),这样不断开方开下去,直到对于某个i满足a(d * 2i) mod n = n-1或者最后指数中的2用完了得到的ad mod n=1或n-1。 Miller-Rabin算法是一个RP算法。RP是时间复杂度的一种,主要 针对判定性问题。一个算法是RP算法表明它可以在多项式的时间里完成,对于答案为否定的情形能够准确做出判断,但同时它也有可能把对的判成错的(错误概率 不能超过1/2)。RP算法是基于随机化的,因此多次运行该算法可以降低错误率。 3.5 程序代码关键部分:function pow( a, d, n:longint ):longint;begin if d=0 then exit(1) else if d=1 then exit(a) else if d and 1=0 then exit( pow( a*a mod n, d div 2, n) mod n) else exit( (pow( a*a mod n, d div 2, n) * a) mod n);end;function IsPrime( a,n:longint ):boolean;var d,t:longint;begin if n=2 then exit(true); if (n=1) or (n and 1=0) then exit(false); d:=n-1; while d and 1=0 do d:=d shr 1; t:=pow( a, d, n ); while ( dn-1 ) and ( t1 ) and ( tn-1 ) do be
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业管理服务标准操作及客户服务
- 建筑设计规范及节能方案讲解
- 幼教活动设计实战案例与教学反思
- 数列求和典型问题解析及解题技巧
- 农民工工资支付管理补充协议书
- 小小演讲家展现风采演讲稿(5篇)
- 多方联建社区开发合同
- 小学六年级科学实验教学课件
- 三年级语文期中复习资料方案
- 市场推广合作协议书与关键
- 2024-2025学年陕西省西安西工大附中高一(上)月考物理试卷(含答案)
- 港航实务 皮丹丹 教材精讲班课件 60-第2章-2.8.1-航道整治的方法
- 智鼎在线测评题库88题
- 电缆敷设施工方案及安全措施
- 三级电工职业技能等级认定理论考试复习题及答案
- 肾性贫血的诊治进展课件
- 八年级上册《生命 生态 安全》计划
- 《济南的冬天》课后习题参考答案
- DB23T 3773-2024 坡耕地玉米田套种毛叶苕子栽培技术规程
- 企业级IPv6网络改造及升级服务合同
- 地基沉降量计算-地基沉降自动计算表格
评论
0/150
提交评论