#c语言 有没有人可以帮助我

流式加密
输入一个任意长度可见字符串组成的字符串,并随机生成一个等长度的随机密钥并保存在文件中,采用按位异或的方式进行二进制加密,并将该加密结果保存在一个文件中,解密时课导入该密文和密钥进行解密,将解密结果进行输出。

img

就是对应字符进行异或就好了啊

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char s[100001] = {0};
char m[100001] = {0};
char s1[100001] = {0};
char m1[100001] = {0};

int main(){

    gets(s);
    int len = strlen(s);
    int n = 0;
    srand(time(NULL));
    for(int i=0;i<len;i++)
    {
        m[n] = rand()%256;
        s[i] = s[i] ^ m[n];
        n++;
    }
    FILE *fp1 = fopen("D:\\m.dat","w");
    fwrite(m,1,len,fp1);
    fclose(fp1);
    //
    FILE *fp2 = fopen("D:\\data.dat","w");
    fwrite(s,1,len,fp2);
    fclose(fp2);
    //
    FILE *fp3 = fopen("D:\\m.dat","r");
    fread(m1,1,100001,fp3);
    fclose(fp3);
    //
    FILE *fp4 = fopen("D:\\data.dat","r");
    fread(s1,1,100001,fp4);
    fclose(fp4);
    //
    len = strlen(s1);
    for(int i=0;i<len;i++)
        s1[i] = s1[i] ^ m[i];
    printf("%s\n",s1);

    return 0;
}

做两次异或运算可以得到原值:a^b^b=a