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

📄 we.cpp

📁 million Berin的具体算法
💻 CPP
字号:
#include<stdio.h>
#include <iostream>
void Swap(  unsigned char s1,  unsigned char s2)
{
     unsigned char x;
    x=s1;
    s1=s2;
    s2=x;
}
void main(int argc,char* argv[])
{
    char K[255];
     unsigned char s[256] ,T[256];
   unsigned char a[513],b[513];
    int i,j,x,t,r,k=1,inlen,length;
    unsigned char input=0;
	unsigned char output=0;
	char plainname[10],ciphername[10];
	FILE * in,* out;
	cout<<"/************************开始*********************************/"<<endl;
	 cout<<"请输入密钥(256个字内):"<<endl;  //输入密钥
        cin>>K;
        length=strlen(K);
    while(k==1)
    {  cout<<"如果想用同一个密钥请输入1,否则请输入0"<<endl;
    cin>>r;
    if(r==0)  //判断是否用同一个密钥
        {
        cout<<"请输入密钥(256个字内):"<<endl;  //输入密钥
         cin>>K;
       length=strlen(K);
    }
    for(i=0;i++;i<256)     //初始化S
    {s[i]=i;
     T[i]=K[i%length];
     }
     j=0;
     for(i=0;i<256;i++)
     {
        j=(j+s[i]+T[i])%256;
        Swap(s[i],s[j]);
     }
     cout<<"如果想加密就输入0,如果想解密就输入1:"<<endl;
     cin>>t;
     if(t==0)
     {
         printf("请输入要加密的文件:\n");    //开始用RC4加密
         cin>>plainname;
        if((in=fopen(plainname,"rb"))==NULL)
        {
             printf("不能打开!");
            exit(0);
        }
        printf("请输入加密以后想生成的文件名:\n");
        cin>>ciphername;
        if((out=fopen(ciphername,"wb+"))==NULL)
        {                                             //打开二进制读取文件
            printf("不能打开!");
            exit(0);
        }

        i=0;j=0;
       while(!feof(in))             //对文件的RC4加密过程
        {
        input=(unsigned char)fgetc(in);
        i=(i+1)%256;
        j=(j+s[i])%256;
        Swap(s[i],s[j]);
        t=(s[i]+s[j])%256;
        K[x]=s[t];
        output=input^K[x];
        fputc(output,out);
      }
      fclose(in);
        fclose(out);
 }
 else if(t==1)     //开始对文件进行RC4解密
 {
     printf("请输入要解密的文件:\n");
      cin>>ciphername;
        if((in=fopen(ciphername,"rb"))==NULL)
        {
           printf("不能打开!");
            exit(0);
        }
       printf("请输入解密以后要生成的文件名:\n");
       cin>>plainname;
        if((out=fopen(plainname,"wb+"))==NULL)
        {
            printf("不能打开!");
            exit(0);
        }
        i=0;j=0;
       while(!feof(in))   //开始进行对文件的RC4解密操作
        {
           input=(unsigned char)fgetc(in);
        i=(i+1)%256;
        j=(j+s[i])%256;
        Swap(s[i],s[j]);
        t=(s[i]+s[j])%256;
        K[x]=s[t];
       output=input^K[x];
        fputc(output,out);
      }
   cout<<endl;
   	fclose(in);
    fclose(out);
 }
 else
 cout<<"输入错误:"<<endl;     //判断输入的是否是错误的信息
 cout<<"如果还想继续操作请输入1,退出请输入0;"<<endl; //判断对此程序的操作是否继续
 cin>>k;

 }
 cout<<"/**************************结束*********************************/"<<endl;
}







⌨️ 快捷键说明

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