统计频率分析周期&RC4算法实现.doc

统计频率分析周期&RC4算法实现.doc

ID:52864230

大小:150.00 KB

页数:7页

时间:2020-03-31

统计频率分析周期&RC4算法实现.doc_第1页
统计频率分析周期&RC4算法实现.doc_第2页
统计频率分析周期&RC4算法实现.doc_第3页
统计频率分析周期&RC4算法实现.doc_第4页
统计频率分析周期&RC4算法实现.doc_第5页
资源描述:

《统计频率分析周期&RC4算法实现.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、网络密码实验报告实验名称实验一统计频率分析周期+RC4算法实现姓名学号028实验日期2014.04.16实验报告要求:1.实验目的2.实验要求3.实验环境4.实验作业5.问题及解决6.思考问题7.实验体会【实验目的】掌握维吉尼亚多表加密算法原理,学会使用Kasiski方法统计频率分析密钥周期;掌握RC4算法原理,用程序实现RC4算法加解密。【实验要求】1、使用Kasiski方法统计维吉尼亚算法密文(“统计频率分析周期.txt”)的频率,分析所使用的密钥周期。2、程序实现RC4算法加解密过程,使用测试向量进行正确性验证,并分析算法实现效率。【实验环境】Vs2010【实验作业】见表格外【

2、实验中出现问题及解决方法】【思考问题】【实验体会】1.在编写RC4算法的过程中,相比AES和DES算法而言,思路很清晰,RC4算法的实现很简单。课本中也给了一些关键性的代码供我们参考,一看就一目了然。剩下的只是对具体的实现了。RC4算法是流密码的典型代表,通过学习和编写RC4算法,我对流密码的理解也更加的深刻了,流密码的原理如下图所示;很明显,在解密端,密文流与完全相同的密钥流异或运算恢复出明文流。RC4算法其加密密钥和解密密钥相同总之,通过编写RC4算法,是我进一步明白编程时我们一定要有清晰的算法思路,要知道我们自己要干什么,用哪一种的编程思路更好,函数参数应该怎么设置,这都需要一

3、定的技巧。当遇到编写和调试所不能解决的问题时,决不能闭门造车瞎苦恼,一定要积极查阅资料,请教同学老师寻求解决办法,因为你有可能可以找到更好地解决方案。我觉得算法的实现并不是自己一定要把它完全自己编出来,关键还是算法思想,只有掌握了算法思想的精髓,再把编程实现划分为各个小的模块,再编程实现就会简单很2.成绩优良中及格不及格教师签名:日期:实验作业:一、统计频率分析周期1.原理1.1Kasiski方法原理:在英文中,一些常见的单词如the有几率被密钥的相同部分加密,即原文中的the可能在密文中呈现为相同的三个字母。在这种情况下,相同片段的间距就是密钥长度的倍数。所以我们可以通过在密文中找

4、到相同的片段,计算出这些相同片段之间的间距,而密钥长度理论上就是这些间距的公约数。1.2分析原理:通过上面的原理可知,我们可以编程求出密文中这些重复字段的间距,然后进行分析,逐步缩小范围,从而找到可能的密钥周期。我们可以先假定一个密钥周期范围(这个范围在程序中用两个数来表示,比如10和20,表示的就是周期长度为10到20这个范围之内的),然后通过for循环将符合这个长度范围的密文段找出来,并求出它们的距离。然后分析这些距离的公约数,如果能找到公约数,再将这个公约数作为可能的密钥周期进行测试。直到找到最小的公约数,该公约数就是密钥长度。2.通过程序分析得到密钥周期首先输入一组比较大的数

5、,比如50和60,通过运行可得,长度超过50时,不存在任何相同的字符串。如图所示:然后输入小于50的一组数,如4050,运行结果如下(没有显示完全),得到的距离都是1077,1077可以被只能被3整除,这时候我们可以猜测密钥周期可能是3或359(根据第一步可知,此解不存在)。我们再次输入一组数,比如30和40,运行结果如下(没有显示完全):可以看到其距离还是1077,所以我们猜测密钥周期可能就是3。继续输入更小数,20和30,运行结果如下图(没有显示完全):可以看到距离有两种,一个是1077,另一个是2391,其中可以整除2391的数有3和797,而797是一个质数。继续往下分析,输

6、入更小的一组数:10和20,运行结果太多,不在此展示。其中运行后相同字符串间的距离有1077,2391,246,这些数都可以被3整除。然后继续输入更小的一组数3和10,运行结果也太多,不在此展示。其中相同字符串的距离都可以被3整除。至此,我们可以推测密钥周期就是3。二、程序实现RC4算法加解密过程,使用测试向量进行正确性验证,并分析算法实现效率1.原理首先,RC4是属于流密码体系中的一种。RC4的原理比较简单,书上的描述也是很简洁的:用1—256个字节(8-2048位)的可变长度密钥初始化一个256字节的状态向量S,S的元素记为S[0],S[1],…,S[255],从始至终置换后的S

7、包含从0到255的所有8位数。对于加密和解密,字节K是从S的255个元素中按一种系统化的方式选出的一个元素生成的。每生成一个K的值,S中的元素个体就被重新置换一次。有了以上的原理解释,以及书上的一些关键性算法伪代码描述,就可以很清晰的写出代码了。2.代码流程1)初始化Si.初始化s中的值,升序赋值为0—255,;ii.建立临时向量T,若k长度为256字节,直接将K赋给T。否则keylen<256时将k的值赋给T的前keylen个值,然后循环重复将T的其他值

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。