救救孩子 可以解决一个问题吗😭

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

代码如下,如有帮助,请帮忙采纳一下,谢谢。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char mw[100]={0},my[100]={0},jmp[100]={0},jmn[100]={0};
    int i,j,n;
    FILE* fp;
    srand((unsigned int)time(NULL));
    printf("请输入明文:");
    gets(mw); //读取明文
    i=0;
    while(mw[i])
    {
        n = 33+ rand()%80; //生成0-79的随机数,密钥使用可见字符部分的字符
        my[i] = n;

        //加密后的字符
        jmp[i] = mw[i] ^ my[i];
        i++;
    }

    printf("密钥字符:%s\n",my);
    printf("加密后字符:%s\n",jmp);
    if((fp= fopen("my.in","wb")) == 0)
    {
        printf("文件打开错误\n");
        return 0;
    }
    //密钥和加密后的内容写入文件
    my[i] = '\n';
    fwrite(my,1,i+1,fp);
    fwrite(jmp,1,i,fp);
    fclose(fp);

    //打开文件读取
    fp = 0;
    fp=fopen("my.in","rb");
    if(fp == 0)
    {
        printf("文件打开失败");
        return 0;
    }
    memset(my,0,100);
    memset(jmp,0,100);
    fgets(my,100,fp);
    fgets(jmp,100,fp);
    fclose(fp);
    n = strlen(my);
    if(my[n-1] == '\n') my[n-1] = 0;
    printf("读取的密钥字符:%s\n",my);
    printf("读取的加密后字符:%s\n",jmp);
    //解密
    i=0;
    while(my[i])
    {
        jmn[i] = my[i] ^ jmp[i]; 
        i++;
    }

    printf("解密后字符:%s\n",jmn);

    return 0;
}