密码学实验报告_4哈尔滨工程大学
实验报告
实验名称: RC4加密
班级:
学号:
姓名:
实验时间:
成绩:
指导教师:
实验室名称:
哈尔滨工程大学实验室与资产管理处制
一、实验名称
RC4加密
二、实验目的
通过编程实现RC4加密的算法设计,并加深对其的了解。
三、实验环境(实验所使用的器件、仪器设备名称及规格)
WindowXP系统计算机,Dev C++
四、实验任务及其要求
根据实验原理部分对RC4加密的介绍,自己创建明文信息,并选择一个密钥,编写RC4加密的实现程序,实现加密和解密操作。
五、实验设计(包括原理图、真值表、分析及简化过程、卡诺图、源代码等)
#include<>
#include<string>
int main()
{
int n,i,j,tmp,t,x,m,p,c;
char M[256],C[256];
printf("请输入明文:");
gets(M);
printf("请输入主密钥长度:");
scanf("%d",&n);
c=1;
for(i=0;i<n;i++)
{
c*=2;}
int K[c],S[c],T[c];
printf("请输入主密钥:");
for(i=0;i<n;i++)
scanf("%d",&K[i]);
printf("请输入所需随机密钥长度:");
scanf("%d",&t);
for(i=0;i<c;i++)
S[i]=i;//对S初始化
for(i=0;i<c;i++)
{
T[i]=K[(i%n)];
printf("%d",T[i]);
}
printf("\n");//初始化T向量
j=0;
for(i=0;i<c;i++)
{
j=(j+S[i]+T[i])%c;
tmp=S[j];
S[j]=S[i];
S[i]=tmp;
}
for(i=0;i<c;i++)
printf("%d",S[i]);
printf("\n");//T对S进行初始置换
i=0;
j=0;
for(p=0;p<t;p++)
{i=(i+1)%c;
j=(j+S[i])%c;
tmp=S[j];
S[j]=S[i];
S[i]=tmp;
m=(S[i]+S[j])%c;
x=S[m];
C[p]=M[p]^x;
M[p]=C[p]^x;
}
printf("加密结果:");
for(p=0;p<t;p++)
printf("%c",C[p]);
printf("解密结果:");
for(p=0;p<t;p++)
printf("%c",M[p]);
六、实验步骤
RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见RC4的密钥范围任然可以在今后相当长的时间里抵御暴力搜索密钥的攻击。实际上,如今也没有找到对于128bit密钥长度的RC4加密算
密码学实验报告 4 来自淘豆网m.daumloan.com转载请标明出处.