文档详情

rc4算法实验报告(共9篇).doc

发布:2017-05-05约1.44万字共31页下载文档
文本预览下载声明
rc4算法实验报告(共9篇) RC4算法实验报告 RC4密码算法实验报告 二 一.实验内容: 编程实现RC4加/解密算法。 二.算法分析 #includeiostream.h #includestring.h #includestdio.h #include conio.h #include stdlib.h #include fcntl.h #include sys\stat.h #include io.h #define SIZE 512 charpData[512]={\0}; typedef unsigned long ULONG; void swap(unsigned char *s, unsigned inti, unsigned int j) { unsigned char temp = s[i]; s[i] = s[j]; s[j] = temp; } void rc4_init(unsigned char *s, unsigned char *key,unsigned long Len) { 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); } 队十二班胡岩20118130211 } void rc4_crypt(unsigned char *s,unsigned char *Data, unsigned long Len) { int x=0,y=0,t=0; unsigned long i=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]; } } void save() { FILE*fp; inti; if((fp=fopen(1.txt,wb))==NULL) { cout不能打开文件!endl; return; } for(i=0;iSIZE;i++) if(fwrite(amp;pData[i],sizeof(pData[512]),1,fp)!=1) cout文件写入错误!endl; fclose(fp); } void main() { int handle; char string[40]; int function=1; int length, res; unsigned char s[256] = {0};//S-box char key[256] = {\0}; while(true) { if(function==1) { cout输入要加密的明文:pDataendl; cinpData; ULONG len = strlen(pData); cout输入加密所用的密钥: keyendl; cinkey; ULONG c = strlen(key); rc4_init(s,(unsigned char *)key,strlen(key));//初始化 rc4_crypt(s,(unsigned char *)pData,len);//加密 cout输出加密后的密文:pDataendl; save(); } else if(function==2) { ULONG len = strlen(pData); rc4_init(s,(unsigned char *)key,strlen(key));//初始化 rc4_crypt(s,(unsigned char *)pData,len);//解密 cout解密后的明文为:pData; save(); } else if(function=3) { cout退出RC4加解密系统!endl; break; } else { cout请输入正确的命令符:\n; } cout\n; cout输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:\n; cout请输入命令符:\n; cinfunction; } } 三.实验结果 (加密) 记事本 (解密) 记事本 四、实验心得和总结 在编写RC4算法的过程中参考了一些关键性的代码,然后剩下的只是对具体的实现了,其中会用到Swap函数的实现和一些模运算,这都是一些基
显示全部
相似文档