资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划rc4算法实验报告(共9篇)RC4密码算法实验报告二一.实验内容:编程实现RC4加/解密算法。二算法分析#include#include#include#include#include#include#include#include#defineSIZE512charpData512=0;typedefunsignedlongULONG;voidswap(unsignedchar*s,unsignedinti,unsignedintj)unsignedchartemp=si;si=sj;sj=temp;voidrc4_init(unsignedchar*s,unsignedchar*key,unsignedlongLen)inti=0,j=0,k256=0;for(i=0;ipData;ULONGlen=strlen(pData);coutkey;ULONGc=strlen(key);rc4_init(s,(unsignedchar*)key,strlen(key);/初始化rc4_crypt(s,(unsignedchar*)pData,len);/加密coutfunction;三实验结果记事本记事本四、实验心得和总结在编写RC4算法的过程中参考了一些关键性的代码,然后剩下的只是对具体的实现了,其中会用到Swap函数的实现和一些模运算,这都是一些基础的东西,我都能够编程一一实现。RC4算法是流密码的典型代表,通过学习和编写RC4算法,我对流密码的理解也更加的深刻了,在解密端,密文流与完全相同的密钥流异或运算恢复出明文流。RC4算法其加密密钥和解密密钥相同总之,通过编写RC4算法,是我进一步明白编程时我们一定要有清晰的算法思路,要知道我们自己要干什么,用哪一种的编程思路更好,函数参数应该怎么设置,这都需要一定的技巧。当遇到编写和调试所不能解决的问题时,决不能闭门造车瞎苦恼,一定要积极查阅资料,请教同学老师寻求解决办法,因为你有可能可以找到更好地解决方案。RC4算法密码技术实验报告上海电力学院ShanghaiUniversityofElectricPower实验报告院系名称:计算机科学与技术学院_课程名称:密码编码学与网络安全_实验项目名称:RC4算法设计_班级与班级代码:XX151班_学生姓名:方立春学号:XX3259_同组同学姓名:邓君刘海涛刘和平庄晓琛马昶杰指导教师:田秀霞_实验日期:XX/11/2_实验一RC4密码算法算法实现一、实验目的?理解流密码的概念及相关结构;?理解并能够编写基本的流密码体制;?熟练应用C+编程实现RC4密码算法体制二、实验内容:编程实现RC4加/解密算法。三、实验原理?RC4算法是一种序列密码体制或称流密码体制,其加密密钥和解密密钥相同?RC4的密钥长度可变,但为了确保哪去安全强度,目前RC4至少使用128位的密钥?用1256个字节的可变长度密钥初始化一个256个字节的状态向量S,S的元素记为S0,S1,S255,从始至终置换后的S包含从0到255的所有8位数。对于加密和解密,字节K是从S的255个元素中按一种系统化的方式选出的一个元素生成的。每生成一个K的值,S中的元素个体就被重新置换一次。三、实验步骤?密钥调度算法?设置内部状态的随机排列。?开始时,内部状态中的元素被初始化为0255,既si=i(i=0,255);?密钥长度可变,设为L个字节;?L一般为532之间,用L个字节不断重复填充,直至得到K0,K255,用于对内部状态S进行随机化。?j=0?对i=0,255做?j=j+Si+Kimod256?互换si与sj?伪随机生成算法?从内部状态中选取一个随机元素作为密钥流中的一个字节,并修改内部状态以便下一次选择。?选取过程取决于索引值i和j,它们的初始值均为0。?i=0?j=0?重复下述步骤,直至获得足够长度的密钥流:?i=i+1mod256?j=j+Simod256?互换si与sj?t=Si+Sjmod256?K=St?microsoftvisualC+编辑环境下编写DES代码并编译,连接,调试运行正确后保存cpp文件并截图。五、软件使用说明?开发环境:MicrosoftVisualC+;?测试数据:?密钥key:其实RC4算法很简单!?明文:fanglichun?参数使用详细说明:?首先双击运行生成的文件;?根据.exe文件的提示输入自己设定的密钥和要加密解密的字符进行加解密。?实验结果:输入测试数据进行加解密,结果均正确?相应测试截图:六、参考资料?密码编码学与网络安全原理与实践(第五版)?百度文库七、实验心得和总结在编写RC4算法的过程中,相比AES和DES算法而言,我觉得思路很清晰,因为RC4算法的实现很简单,就包括KSA(初始化S盒)和PRGA(密钥流的生成)算法的编写,而且课本中也给了一些关键性的代码供我们参考,一看就一目了然。剩下的只是对具体的实现了,其中会用到Swap函数的实现和一些模运算,这都是一些基础的东西,我都能够编程一一实现。RC4算法是流密码的典型代表,通过学习和编写RC4算法,我对流密码的理解也更加的深刻了,流密码的原理如下图所示;很明显,在解密端,密文流与完全相同的密钥流异或运算恢复出明文流。RC4算法其加密密钥和解密密钥相同总之,通过编写RC4算法,是我进一步明白编程时我们一定要有清晰的算法思路,要知道我们自己要干什么,用哪一种的编程思路更好,函数参数应该怎么设置,这都需要一定的技巧。当遇到编写和调试所不能解决的问题时,决不能闭门造车瞎苦恼,一定要积极查阅资料,请教同学老师寻求解决办法,因为你有可能可以找到更好地解决方案。我觉得算法的实现并不是自己一定要把它完全自己编出来,关键还是算法思想,只有掌握了算法思想的精髓,再把编程实现划分为各个小的模块,再编程实现就会简单很八实验源代码/#include#include#includetypedefunsignedlongULONG;voidswap(unsignedchar*s,unsignedinti,unsignedintj)unsignedchartemp=si;si=sj;sj=temp;voidrc4_init(unsignedchar*s,unsignedchar*key,unsignedlongLen)inti=0,j=0,k256=0;for(i=0;i/加密类基类/publicclassCryptoBase/编码转换器,用于字节码和字符串之间的转换,默认为本机编码/staticpublicEncodingEncode=;publicenumEncoderModeBase64Encoder,HexEncoder;/带编码模式的字符串加密/1/要加密的数据/密码/编码模式/加密后经过编码的字符串publicStringEncrypt(Stringdata,Stringpass,em)if(data=null|pass=null)returnnull;if(em=)return(EncryptEx(data),pass);elsereturnByteToHex(EncryptEx(data),pass);/带编码模式的字符串解密/要解密的数据/密码/编码模式/明文publicStringDecrypt(Stringdata,Stringpass,em)if(data=null|pass=null)returnnull;if(em=)return(DecryptEx(data),pass);elsereturn(DecryptEx(HexToByte(data),pass);/加密/要加密的数据/密码/加密后经过默认编码的字符串publicStringEncrypt(Stringdata,Stringpass)returnEncrypt(data,pass,);/解密2/要解密的经过编码的数据/密码/明文publicStringDecrypt(Stringdata,Stringpass)returnDecrypt(data,pass,);/加密/要加密的数据/密钥/密文virtualpublicByteEncryptEx(Bytedata,Stringpass)returnnull;/解密/要解密的数据/密码/明文virtualpublicByteDecryptEx(Bytedata,Stringpass)returnnull;staticpublicByteHexToByte(StringszHex)/两个十六进制代表一个字节Int32iLen=;if(iLen=(UInt32)A)?(UInt32)A-10:(UInt32)0);if(tmp1=16)returnnull;tmp2=(UInt32)szHexi*2+1-(UInt32)szHexi*2+1=(UInt32)A)?(UInt32)A-10:(UInt32)0);3if(tmp2=16)returnnull;pbBufferi=(Byte)(tmp1*16+tmp2);returnpbBuffer;staticpublicStringByteToHex(BytevByte)if
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号