密码学课程设计报告5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密码学课程设计
班级:
姓名:
学号:
指导教师:
2011.6
目录
密码学课程设计 (1)
1.实验一实现一个多表古典加密和解密程序 (1)
1.1实验目的 (1)
1.2实验要求 (1)
1.3实验内容 (1)
1.4古典加密方法 (1)
1.5 程序代码 (1)
1.6 结果分析 (3)
1.7 实验总结 (3)
2.实验二DES算法的实现 (3)
2.1实验目的 (3)
2.2实验要求 (4)
2.3实验内容 (4)
2.4 DES对称加密算法 (4)
2.5 程序代码 (5)
2.6结果分析 (8)
2.7实验总结 (8)
3.实验三实现一个大素数生成算法 (9)
3.1实验目的 (9)
3.2实验要求 (9)
3.3实验内容 (9)
3.4 Miller-Rabin素性测试法 (9)
3.5 程序代码 (9)
3.6 结果分析 (10)
3.7 实验总结 (11)
4. 结束语 (11)
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;i cipher[i] = 'a'+(plain[i] -'a' + key[i % d] - 'a'+ LETTERS) % LETTERS; //adding LETTERS to avoid the result is negative cipher[i] = '\0'; } void decrypt_vigenere(char* cipher, char* key, char* plain) { int max = strlen(cipher), d = strlen(key)-1, i; for(i=0;i plain[i] ='a'+(cipher[i]-'a'-(key[i % d] - 'a')+LETTERS) % LETTERS; plain[i] = '\0'; } void main() { char cipher[MAX_LEN],key[MAX_LEN],plain[MAX_LEN]; printf("--> 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("%s\n",cipher); decrypt_vigenere(cipher, key, plain); printf("\n-->The original message is: \n"); printf("%s\n",plain); } 1.6 结果分析 首先在程序执行时的提示下,输入密钥,接下来输入要加密明文,程序执行,可以产生加密后的密文,并自动解密出原来的明文。顺利执行加密和解密过程。 1.7 实验总结 古典多表密码有多种体质,这次试验我选择的是Vigenere体制。经过对加密算法的实现,我对古典加密算法的模式,过程和原理有了更深入的了解。 多表古典密码通过构造多个对应明文的密文字母表,在密钥的控制下使用相应的密文字母表中的某个字母来代替明文字母表中的一个字母。达到隐藏明文的目的。解密的时候对这个过程进行逆操作,得到明文。一个明文字母有多种代替。而 Vigenere密码就是著名的多表代替密码。 而且通过编码,又练习了我C++操作的水平。 2.实验二DES算法的实现 2.1实验目的 握分组加密算法的设计与实现方法。