⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encodeanddecode.c

📁 rc4加密的编码和解码程序。可以直接运行测试通过
💻 C
字号:
#include <stdio.h>
#include <string.h>

//此程序为RC4流密码算法的实现
int is_Sourcepathright(char *source_path);
int is_Destpathright(char *dest_path);
int Check(int argc,char **argv);
int Crypt(char *sourcepath,char *destpath,char *key);
int encodeAndDecode(char* source,char* dest,char* key,char type);
int Decrypt(char *sourcepath,char *destpath,char *key);
int main(int argc,char **argv) {
	char dest[255];int i;
	char d[255];
	encodeAndDecode("linpeiwen",dest,"znegping",'E');
	encodeAndDecode(dest,d,"znegping",'D');
for(i=0;i<=strlen(d)-3;i++) {
printf("%c",d[i]);
}
}
int encodeAndDecode(char* source,char* dest,char* key,char type)
{
//	char dest[255];
int size=0;
 if (type=='e'||type=='E'){

  if((size=Crypt(source,dest,key)))
   return size;
  else
   return -1;
 }
 if (type=='d'||type=='D'){
  if((size=Crypt(source,dest,key)))
   return size;
  else
   return -1;
 }
 return -1;
}


int is_InputKeyRight(char *inputkey)
{
 if(strlen(inputkey)<=256&&strlen(inputkey)>0)
  return 1;
 else
  return 0;
}

void InitS(unsigned char *s)
{
int i;
for(i=0;i<256;i++)
s[i]=i;
}

void InitT(unsigned char *t,char *inputkey)
{
int i;
for(i=0;i<256;i++)
{
t[i]=inputkey[i%strlen(inputkey)];
}
}

void Swap(unsigned char *s,int first,int last)
{
unsigned char temp;
temp=s[first];
s[first]=s[last];
s[last]=temp;
}

void InitPofS(unsigned char *s,unsigned char *t)
{
int i;
int j=0;
for(i=0;i<256;i++)
{
j=(j+s[i]+t[i])%256;
Swap(s,i,j);
}
}

int Crypt(char *source,char *dest,char *key)
{
unsigned char s[256]={0};
unsigned char t[256]={0};
int buf;

int i=0;
int j=0;
int k=0;
int temp;
int size;
int counter=0;
int last=0;

size=strlen(source);
InitS(s);
InitT(t,key);
InitPofS(s,t);
buf=source[0];

while(true){
if(buf=='\0'){break;}
i=(i+1)%256;
j=(j+s[i])%256;
Swap(s,i,j);
temp=(s[i]+s[j])%256;
k=s[temp];
dest[counter] = k^buf;
counter++;
buf=source[counter];
}
last=counter+1;
dest[last] = '\0';

return counter;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -