维吉尼亚实验报告.docxVIP

  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文档。上传文档
查看更多
维吉尼亚密实现与攻击 一、实验目的: 维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用高级语言编写和调试一个简单的维吉尼亚密码实现及分析破译程序。通过本实验可以加深理解维吉尼亚密码及其分析破译。 实验要求: 从数据文件data.txt (result.txt) 中读入要加(解)密的数据,将加(解)密结果再写入文件result_v.txt (data.txt)中。统计密文数据中明文字母和加密后得到的密文字母的频率,并找出各自频率最大的5个字母;由相关数据计算密文的密表数。 为维吉尼亚密码算法编写独立的模块(通过头文件调用),在主程序中调用相应的函数。 维吉尼亚密钥字:hello。 明文中空格、标点符号等均忽略。 三、实验步骤: (1)了解维吉尼亚加密原理 维吉尼亚使用一个词组作为密钥,密钥中每一个字母用来确定一个代替表,每一个密钥字母被用来加密一个明文字母,等所有密钥字母使用完后,密钥再循环使用。维吉尼亚是最著名的多表代替密码的例子。 例如用Vigenere加密“wananyu” K=songhua 步骤如下: 1.对照字母表写出“wananyu”在字母表中的位置,以及明文“songhua”所对应的密钥字母在字母表中的位置,如下: w a n a N y u 22 0 13 0 13 24 20 s o n g H u a 18 14 13 6 7 20 0 2.维基利亚密码加密函数为:f(Pi)=(Pi+Ki)mod26,f(Pi)表示密文字母在字母表中的位置,Pi表示明文字母在字母表中的位置,Ki表示密钥字母在字母表中的位置,i=1,2,3,…,n.根据维基利亚密码加密函数写出求密文的过程及密文字母在字母表中的位置如下表: w a n a N y u 22 0 13 0 13 24 20 s o n g H u a 18 14 13 6 7 20 0 14 14 0 6 20 18 20 3.看表可知:明文“wananyu”维基利亚加密后的密文字母在字母表中的位置为: 14 14 0 6 20 18 20 因此密文为:OOAGUSU (2)编写程序: 由维吉尼亚加密算法的原理可知,编写程序来实现维吉尼亚加解密主要是构造明文对应的数字表,在这里,可用将明文字母转化成其ACSII值,在这之前,要将所有明文字母和密钥字母首先转化为大写字母,再转化成其对应的ACSII码值,将明文和密钥字母所对应的ACSII码带入加密或者解密公式,算出密文,再将密文还原成大写字母输出。 四、实验流程: (1)本实验的明文如下: (2)实现明文文件的读取 (3)实现密文文件的保存 fputs(str3,fp2);*/ //注意不能使用fputs,否知出现意想不到的错误!!! fwrite(str3,1,m,fp2); //存入文件result.txt中。 fclose(fp1); fclose(fp2); printf(加密成功,密文已存入result.txt文件中!\n); 解密后的密文如下: 统计明文字母和密文字母的频率,并找出各自频率最大的5个字母;由相关数据计算密文的密表数。 明文中频率最大的5个字母: 密文中频率最大的5个字母: 五、实验心得 Vigenere密码比较简单,通过实验,我明白了密码的加密和加密过程,对维吉尼亚加密算法有了更深入和全面的认识,也更具体地了解到密码学的博大精深。通过编程,我复习C语言的知识,提高了C语言的能力,并且在设计算法的过程中提高了自己的逻辑思维能力和数学能力。 通过与同组的同学讨论和解决问题,也开阔了自己的眼界和思维,如对数组和字符串函数的使用等等。 六、实验分工 小组成员 具体工作 刘鼎钧 搜集资料,编写代码 李静轩 撰写实验报告,编写代码 涂艾伶 撰写实验报告,编写代码

文档评论(0)

damoyihao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档