打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
RC4加密算法
//程序开始
#include<stdio.h>
#include<string.h>
 
typedefunsignedlongULONG;
 
/*初始化函数*/
voidrc4_init(unsignedchar*s,unsignedchar*key,unsignedlongLen)
{
inti=0,j=0;
chark[256]={0};
unsignedchartmp=0;
for(i=0;i<256;i++)
{
s[i]=i;
k[i]=key[i%Len];
}
for(i=0;i<256;i++)
{
j=(j+s[i]+k[i])%256;
tmp=s[i];
s[i]=s[j];//交换s[i]和s[j]
s[j]=tmp;
}
}
 
/*加解密*/
voidrc4_crypt(unsignedchar*s,unsignedchar*Data,unsignedlongLen)
{
inti=0,j=0,t=0;
unsignedlongk=0;
unsignedchartmp;
for(k=0;k<Len;k++)
{
i=(i+1)%256;
j=(j+s[i])%256;
tmp=s[i];
s[i]=s[j];//交换s[x]和s[y]
s[j]=tmp;
t=(s[i]+s[j])%256;
Data[k]^=s[t];
}
}
 
intmain()
{
unsignedchars[256]={0},s2[256]={0};//S-box
charkey[256]={"justfortest"};
charpData[512]="这是一个用来加密的数据Data";
ULONGlen=strlen(pData);
inti;
 
printf("pData=%s\n",pData);
printf("key=%s,length=%d\n\n",key,strlen(key));
rc4_init(s,(unsignedchar*)key,strlen(key));//已经完成了初始化
printf("完成对S[i]的初始化,如下:\n\n");
for(i=0;i<256;i++)
{
printf("%02X",s[i]);
if(i&&(i+1)%16==0)putchar('\n');
}
printf("\n\n");
for(i=0;i<256;i++)//用s2[i]暂时保留经过初始化的s[i],很重要的!!!
{
s2[i]=s[i];
}
printf("已经初始化,现在加密:\n\n");
rc4_crypt(s,(unsignedchar*)pData,len);//加密
printf("pData=%s\n\n",pData);
printf("已经加密,现在解密:\n\n");
//rc4_init(s,(unsignedchar*)key,strlen(key));//初始化密钥
rc4_crypt(s2,(unsignedchar*)pData,len);//解密
printf("pData=%s\n\n",pData);
return0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C语言复杂程序部分模拟试题
信息管理系统
第6章 数组
数组典型程序
流密码与RC4密码初认识
sizeof()和strlen()例子
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服