密码学专业课程设计方案报告.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

密码学课程设计

班级:

姓名:

学号:

指导老师:

.6

目录

TOC\o1-4\f\h\u2105密码学课程设计 1

205801.试验一实现一个多表古典加密和解密程序 1

82011.1试验目标 1

279961.2试验要求 1

293311.3试验内容 1

300901.4古典加密方法 1

261721.5程序代码 1

212661.6结果分析 3

32641.7试验总结 3

267102.试验二DES算法实现 4

246172.1试验目标 4

111682.3试验内容 4

308062.4DES对称加密算法 4

279212.5程序代码 6

14712.6结果分析 8

2012.7试验总结 8

8623.试验三实现一个大素数生成算法 9

60673.1试验目标 9

248083.2试验要求 9

90533.3试验内容 9

122133.4Miller-Rabin素性测试法 9

178443.5程序代码 10

286863.6结果分析 10

50393.7试验总结 11

188674.结束语 11

1.试验一实现一个多表古典加密和解密程序

1.1试验目标

掌握多表古典加密方法。

1.2试验要求

能用高级语言实现古典加密方法。

1.3试验内容

多表古典加密方法关键有Playfair体制、Vigenere体制、Beaufor体制、Vernam体制和Hill体制,用高级语言实现其中一个体制加密和解密算法。

1.4古典加密方法

古典加密方法分为单表加密和多表加密。古典密码编码方法有置换,替换,加法。把明文中字母重新排列,字母本身不变,但其位置改变了,这么编成密码称为置换密码。

最简单置换密码是把明文中字母次序倒过来,然后截成固定长度字母组作为密文。乘积和迭代是多个加密方法混合使用,对一个加密函数数次迭代。

单表替换密码安全性不高,一个原因是一个明文字母只由一个密文字母替换。结构多个密文字母表,在密钥控制下用对应密文字母表中一个字母来替换明文字母表中一个字母。一个明文字母有多个替换。Vigenere密码是著名多表替换密码。所以此次试验我选择做就是Vigenere密码。

1.5程序代码

#includestdio.h

#includestring.h

#includemath.h

#defineMAX_LEN1024

#defineLETTERS26

voidencrypt_vigenere(char*plain,char*key,char*cipher)

{

intmax=strlen(plain)-1,

d=strlen(key)-1,

i;

for(i=0;imax;i++)

cipher[i]=a+(plain[i]-a+key[i%d]-a+LETTERS)%LETTERS;

//addingLETTERStoavoidtheresultisnegative

cipher[i]=\0;

}

voiddecrypt_vigenere(char*cipher,char*key,char*plain)

{

intmax=strlen(cipher),

d=strlen(key)-1,

i;

for(i=0;imax;i++)

plain[i]=a+(cipher[i]-a-(key[i%d]-a)+LETTERS)%LETTERS;

plain[i]=\0;

}

voidmain()

{

charcipher[MAX_LEN],key[MAX_LEN],plain[MAX_LEN];

printf(--Pleaseinputthekey:\n);

fgets(key,sizeof(key),stdin);

printf(\n--Pleaseinputtheplaintext:

文档评论(0)

幸福是什么 + 关注
实名认证
文档贡献者

幸福是什么

1亿VIP精品文档

相关文档