- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
RC4密码算法实验报告
二队十二班胡岩20118130211
一.实验内容:
编程实现RC4加/解密算法。
二.算法分析
#includeiostream.h
#includestring.h
#includestdio.h
#includeconio.h
#includestdlib.h
#includefcntl.h
#includesys\stat.h
#includeio.h
#defineSIZE512
charpData[512]={\0};
typedefunsignedlongULONG;
voidswap(unsignedchar*s,unsignedinti,unsignedintj)
{
unsignedchartemp=s[i];
s[i]=s[j];
s[j]=temp;
}
voidrc4_init(unsignedchar*s,unsignedchar*key,unsignedlongLen)
{
inti=0,j=0,k[256]={0};
for(i=0;i256;i++)
{
s[i]=i;
k[i]=key[i%Len];
}
for(i=0;i256;i++)
{
j=(j+s[i]+k[i])%256;
swap(s,i,j);
}
}
voidrc4_crypt(unsignedchar*s,unsignedchar*Data,unsignedlongLen)
{
intx=0,y=0,t=0;
unsignedlongi=0;
for(i=0;iLen;i++)
{
x=(x+1)%256;
y=(y+s[x])%256;
t=(s[x]+s[y])%256;
swap(s,x,y);
Data[i]^=s[t];
}
}
voidsave()
{
FILE*fp;
inti;
if((fp=fopen(1.txt,wb))==NULL)
{
cout不能翻开文件!endl;
return;
}
for(i=0;iSIZE;i++)
if(fwrite(pData[i],sizeof(pData[512]),1,fp)!=1)
cout文件写入错误!endl;
fclose(fp);
}
voidmain()
{
inthandle;
charstring[40];
intfunction=1;
intlength,res;
unsignedchars[256]={0};//S-box
charkey[256]={\0};
while(true)
{
if(function==1)
{
cout输入要加密的明文:pDataendl;
cinpData;
ULONGlen=strlen(pData);
cout输入加密所用的密钥:keyendl;
cinkey;
ULONGc=strlen(key);
rc4_init(s,(unsignedchar*)key,strlen(key));//初始化
rc4_crypt(s,(unsignedchar*)pData,len);//加密
cout输出加密后的密文:pDataendl;
save();
}
elseif(function==2)
{
ULONGlen=strlen(pData);
rc4_init(s,(unsignedchar*)key,strlen(key));//初始化
rc4_crypt(s,(unsignedchar*)pData,len);//解密
cout解密后的明文为:pData;
save();
}
elseif(function=3)
{
cout退出RC4加解密系统!endl;
break;
}
else
{
cout请输入正确的命令符:\n;
}
cout\n;
cout输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:\n;
cout请输入命令符:\n;
cinfunction;
}
}
三.实验结果
〔加密〕
记事本
〔解密〕
记事本
四、实验心得和总结
在编写RC4算法的过程中参考了一些关键性的代码,然后剩下的只是对具体的实现了,其中会用到Swap函数的实现和一些模运算,这都是
您可能关注的文档
最近下载
- 1_东南营小学体育课教案水平一潘建元2(1)-体育1至2年级全一册教案.docx VIP
- 人教版2025秋小学数学三年级教学设计已知一个数的几倍是多少,求这个数.pdf VIP
- 人教版2025秋小学数学三年级教学设计求一个数的几倍是多少.pdf VIP
- 酒店前台UPSELL培训教学课件.pptx VIP
- 西门子变频器V20说明书SINAMICS-V20.pdf VIP
- 人教版2025秋小学数学三年级教学课件数量间的乘除关系求一个数的几倍是多少.pptx VIP
- 【水电站施组】引水式电站机电金属结构安装工程施工组织设计(最全).doc VIP
- 人教版2025秋小学数学三年级教学课件数量间的乘除关系已知一个数的几倍是多少,求这个数.pptx VIP
- MathCAD软件入门教程.pdf VIP
- 中药剂型PPT参考幻灯片.ppt VIP
文档评论(0)