网站大量收购闲置独家精品文档,联系QQ:2885784924

密码学实验一字符统计.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
密码学实验一字符统计

密码学实验一 实验要求: 1、统计英文小说《战争与和平》中26个字母出现的频数,并计算出频率 2、统计小说中双频的频数,并计算频率 3、统计小说中三频的频数,并计算频率 算法思想: 单频 1、将小说以字符形读入一维数组 2、取1×26的一维数组 3、取a,A的ASCII值numa,numA 4、遍历字符数组,将数组中的字母转换成ASCII值c,当c==numa+i或者c==numA+i时,一维数组中第i个加1 5、根据得到的频数数组计算频率。 至于双频和三频,将上述步骤2分别变为26×26,26×26×26的数组,步骤4中增加循环次数,并且遍历过程中i分别以2和3为步长增加。 实验程序如下: 单频: function [sumdata]=tongji1 fid=fopen(g:\密码学实验数据1.txt,r); temp=fscanf(fid,%c); n=length(temp); sumdata=zeros(1,26); numa=97; numA=65; for i=0:25 for j=1:n t=temp(1,j); c=double(t); if c==numa+i||c==numA+i sumdata(1,i+1)=sumdata(1,i+1)+1; end end end frequency=zeros(1,26); frequency(1,:)=sumdata(1,:)/sum(sumdata); sta=fclose(fid); end 实验结果: 字母 字数 单频 a 74240 0.079747609 b 13169 0.014145963 c 21896 0.023520389 d 44194 0.0474726 e 118461 0.127249212 f 19970 0.021451505 g 17922 0.019251571 h 55006 0.059086705 i 66301 0.071219642 j 1359 0 k 7125 0.007653579 l 37827 0.040633254 m 25652 0.027555033 n 64598 0.069390302 o 71682 0 p 14819 0 q 1079 0.001159047 r 56109 0.060271533 s 59412 0.063819571 t 79827 0.085749089 u 27130 0.029142681 v 9295 0.009984564 w 22192 0.023838348 x 1424 0.001529642 y 19804 0 z 444 0.000476939 双频: 实验程序如下: function [frequency]=tongji2 fid=fopen(g:\密码学实验数据1.txt,r); temp=fscanf(fid,%c); n=length(temp); sumdata=zeros(26,26); frequency=zeros(26,26); numa=97; numA=65; for i=1:2:n t1=temp(1,i); t2=temp(1,i+1); c1=double(t1); c2=double(t2); for a=0:25 for b=0:25 if c1==numa+a||c1==numA+a if c2==numa+b||c2==numA+b sumdata(a+1,b+1)=sumdata(a+1,b+1)+1; end end end end end for a=1:26 for b=1:26 frequency(a,b)=sumdata(a,b)/sum(sum(sumdata)); end end answer=zeros(1,26*26); for i=1:26 for j=1:26 answer(1,26*(i-1)+j)=frequency(i,j); end end [answer,index]=sort(answer,descend) disp

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档