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

实验三_RC4算法_20103259_方立春.doc

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

上海电力学院 Shanghai University of Electric Power 实验报告 院系名称: 计算机科学与技术学院    _______ 课程名称: 密码编码学与网络安全    _______ 实验项目名称: RC4算法设计  ______________ 班级与班级代码: 2010151班 _________ 学生姓名: 方立春  学号:_____  同组同学姓名:邓君 刘海涛 刘和平 庄晓琛 马昶杰 指导教师:  田秀霞 _____________ 实验日期:  2012/11/2  ____________ 实验一 RC4密码算法算法实现 一、实验目的 理解流密码的概念及相关结构; 理解并能够编写基本的流密码体制; 熟练应用C++编程实现RC4密码算法体制 二、实验内容:编程实现RC4加算法用1~256个字节(8~2048位)的可变长度密钥初始化一个256个字节的状态向量S,S的元素记为S[0],S[1],…,S[255],从始至终置换后的S包含从0到255的所有8位数。对于加密和解密,字节K是从S的255个元素中按一种系统化的方式选出的一个元素生成的。每生成一个K的值,S中的元素个体就被重新置换一次。 三、实验步骤(包括流程图、功能模块) 密钥调度算法(KSA,Key-Scheduling Algorithm) 设置内部状态(s[0],…,s[255])的随机排列。 开始时,内部状态中的元素被初始化为0~255,既s[i]=i(i=0,…,255); 密钥长度可变,设为L个字节(K[0],…,K[L-1]); L一般为5~32之间,用L个字节不断重复填充,直至得到K[0],…,K[255],用于对内部状态S进行随机化。 j=0 对i=0,…,255做 j=j+S[i]+K[i] mod 256 互换s[i]与s[j] 伪随机生成算法(PRGA, Pseudo Random Generation Algorithm) 从内部状态中选取一个随机元素作为密钥流中的一个字节,并修改内部状态以便下一次选择。 选取过程取决于索引值i和j,它们的初始值均为0。 i=0 j=0 重复下述步骤,直至获得足够长度的密钥流: i=i+1 mod 256 j=j+S[i] mod 256 互换s[i]与s[j] t=S[i]+S[j] mod 256 K=S[t] microsoft visual C++编辑环境下编写DES代码并编译,连接,调试运行正确后保存cpp文件并截图。 五、软件使用说明(开发环境、参数使用详细说明、实验结果+相应截图等) 开发环境:Microsoft Visual C++ 6.0; 测试数据: 密钥key: 其实RC4算法很简单! 明文:fanglichun 参数使用详细说明: 首先双击运行生成的RC4.exe文件; 根据.exe文件的提示输入自己设定的密钥和要加密解密的字符进行加解密。 实验结果:输入测试数据进行加解密,结果均正确 相应测试截图: 六、参考资料(书籍或网络文章) 密码编码学与网络安全—原理与实践(第五版) 百度文库 七、实验心得和总结 在编写RC4算法的过程中,相比AES和DES算法而言,我觉得思路很清晰,因为RC4算法的实现很简单,就包括KSA(初始化S盒)和PRGA(密钥流的生成)算法的编写,而且课本中也给了一些关键性的代码供我们参考,一看就一目了然。剩下的只是对具体的实现了,其中会用到Swap函数的实现和一些模运算,这都是一些基础的东西,我都能够编程一一实现。 RC4算法是流密码的典型代表,通过学习和编写RC4算法,我对流密码的理解也更加的深刻了,流密码的原理如下图所示;很明显,在解密端,密文流与完全相同的密钥流异或运算恢复出明文流。RC4算法其加密密钥和解密密钥相同 总之,通过编写RC4算法,是我进一步明白编程时我们一定要有清晰的算法思路,要知道我们自己要干什么,用哪一种的编程思路更好,函数参数应该怎么设置,这都需要一定的技巧。当遇到编写和调试所不能解决的问题时,决不能闭门造车瞎苦恼,一定要积极查阅资料,请教同学老师寻求解决办法,因为你有可能可以找到更好地解决方案。我觉得算法的实现并不是自己一定要把它完全自己编出来,关键还是算法思想,只有掌握了算法

文档评论(0)

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

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

1亿VIP精品文档

相关文档