ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:92.04KB ,
资源ID:4267933      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-4267933.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(维吉尼亚密码的C语言实现.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

维吉尼亚密码的C语言实现.doc

1、2016春 密码学原理 软件学院密码学原理作业报告作业1:古典密码体制的实践与分析姓名查志华院系软件学院学号1133710313任课教师刘绍辉指导教师刘绍辉实验地点哈尔滨工业大学实验时间2016.3.15-2016.3.18一、实验目的要求:综述本次实验的基本目的。1了解古典密码的基本体制,掌握维吉尼亚密码的加解密方式,能对文件进行加解密。2. 掌握重合指数的计算方法,了解掌握Kasiskis 的计算方法,能对明文以及密文进行重合指数的计算以及Kasiskis 计算方法; 二、实验内容要求:对如下内容进行详细描述。1 弗吉尼亚密码加密解密算法;明文 =(密文-密钥+26)/26;密文 = (明

2、文+密钥)/26;具体实现见下代码。2 重合指数计算算法;先统计出各个字母出现的频数,f(a),f(b),f(z)f(a)+f(b)+f(z)=X (X就是密文长度),然后把所有的 f(字母)*(f(字母)-1) 的和求出来,假设为sum ,sum/(X*(X-1)就是重合指数具体实现见下代码。3 Kasiskis 计算方法;1 在密文中标出重复的三个或多个字符结构;2 对每一个字符结构,记下结构的起始位置;3 计算相邻的起始点的距离;4 对每个距离求出所有因数;5 若使用多字母替换密码,则密钥的长度为步骤4种出现的某一因数;三、实验结果及分析要求:将实验获得的结果进行描述,涉及不同的密钥以及

3、密钥长度,不同密文长度情况下的Kasiski分析及重合指数分析得出的结果。选择文件进行操作,对于不同的密钥以及不同长度的密钥,情况如下:(文件选取为英文原著阿兹卡班的囚徒1.txt,大小为21K)各字符频率统计:l 密钥长度为4时,即n=4时:l 密钥长度为16时,即n=16时:重合指数计算:l n=1时:l n=2时:l n=4时:l n=8时:l n=16时:l n=32时:l n=64时:l n=128时:l n=256时:l n=9000时:结论:当密钥的长度足够大时,发现密文的重合指数会趋向于3.84%,也就是1/26。代码如下:#include #include #include

4、#include #include void Genkey(int len);void DenKey();int main() int len = 0; int select =0; while(1) printf(请选择操作:加密(1);解密(2):退出(3)n); scanf(%d,&select); if(select =1)/加密操作 printf(请输入密钥长度n); scanf(%d,&len); Genkey(len); else if(select =2)/解密操作 DenKey(); else if(select =3) exit(0); else printf(输入有误!n

5、); return 0;void Genkey(int len) srand(unsigned) time(NULL); /用时间做种,每次产生随机数不一样 int number=0,i=0,j=0,len1; len1=len; char ch; char key110000= ; char alp26 = A,B,C,D,E,F,G, H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z ; while(len 0)/随机生成密钥 number= rand() % 26; /产生0-25的随机数 key1i = alpnumber; len -; i+; printf

6、(随机生成的密钥为:); while(len10)/打印密钥 printf(%c,key1j); j+; len1-; printf(n); int L=strlen(key1); FILE *fp,*fp1; int num126; int num226; int m=0; for(m=0; m=a&ch=A&ch=A&ch=Z) al=(int)(ch-A); num1al+; fprintf(fp1,%c,(ch+key1j%L-A-A)%26+A); bl=(int)(ch+key1j%L-A-A)%26); num2bl+; j+; else al=(int)(ch-a); num1

7、al+; fprintf(fp1,%c,(ch+key1j%L-A-a)%26+A); bl=(int)(ch+key1j%L-A-a)%26); /printf(%d ,bl); num2bl+; j+; fscanf(fp,%c,&ch); printf(加密结果请查看文档!n); / printf(%dn,j); fclose(fp1); fclose(fp); /统计明文密文中各字符的频率 printf(明文中各字符的频率(a-z):); for(m=0; m26; m+) printf(%.3f% ,(float)num1m/j*100); if(m%5)=0) printf(n);

8、 printf(密文中各字符出现的频率(a-z):); for(m=0; m26; m+) printf(%.3f% ,(float)num2m/j*100); if(m%5)=0) printf(n); /计算重合指数 int sum =0; int sum1=0; for(m=0; m26; m+) sum=sum+num1m*(num1m-1); for(m=0; m=A&ch=a&ch=z) fprintf(fp1,%c,(ch-keyj%L-a+a+26)%26+A); j+; fscanf(fp,%c,&ch); printf(解密结果请查看文档!n); fclose(fp1); fclose(fp); 四、实验成绩(共5分)程序设计成绩(1分)实验结果成绩(2分)实验报告成绩(2分)总成绩指导教师签字日期

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。