- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
应用密码学 实验1 报告格式与要求(修改版)
《应用密码学》课程实验报告
实验名称 维吉尼亚密码的实现及分析破译 实验序号 1 姓 名 系院专业 计算机 班 级 学 号 实验日期 2013-05-13 指导教师 阮鸥 成 绩 一、实验目的
维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用高级语言编写和调试一个简单的维吉尼亚密码实现及分析破译程序。通过本实验可以加深理解维吉 尼亚密码及其分析破译。 二、实验内容与要求
(1)设计一个函数实现维吉尼亚密码;
(2)在已知明文及其对应密文的基础上,分析破译维吉尼亚密码,编程求解密钥;
(3)要求有程序实现,有实验结果截图,有测试例子。
(4)编程语言不限制,可以用tc2.0,vc6.0,.net或java 三、实验设备
地点: 实训楼 网络实验室402
硬件环境: Intel Pentium Processor 1.8G 512M内存?windows 操作系统
软件环境: vs2010
四、实验步骤
(1) 设密钥为 K=(GOOGLE)^6;
若明文为:BUYYOUTUBE;加密后,密文为:HIMEZYZIPK
(2) 假设明文为:BUYYOUTUBE
密文为:HIMEZYZIPK
通过求解得,密钥为 K=(GOOGLE)^6;
实现代码:
#include iostream
using namespace std;
//求密钥的最大长度m,类似于求子串的问题。
//提高效率可以调用KMP等其他算法
int getKeyLength(int *keyArray, int arrayLength)
{
int i, j, count = 0, maxKeyLength = 0, subLength = -1;
for(i = 1; i arrayLength; i++)
{
count = 0;
for(j = 0; j arrayLength; j++)
{
if(keyArray[j] == keyArray[i])
{
i++;
count++;
}
else
{
break;
}
}
if(count subLength)
subLength = count;
}
maxKeyLength = arrayLength - count;
return maxKeyLength;
}
int main()
{
char plaintext[20], ciphertex[20]; //明文:BUYYOUTUBE 密文:HIMEZYZIPK
int codeLen = 0;
int plaintextT
文档评论(0)