c语言文件读写和加密解密怎么做

1、文件加密程序:将待加密文件以二进制打开,读入32个字节,分别与口令异或,在将4、5、6三个字分别与0xaaaa异或,即完成加密,执行第二次就解密。 这道题怎么做啊?

#include<stdio.h>
#include<stdlib.h>
 
int main(int argc,char *argv[])
{
    FILE *fpr,*fpw;//注意  FILE 为全大写 
    
    char ch,key=0xfa;//初始密钥 
    //命令行参数必须是3个,且第3个参数必须是+/-
    if(argc!=3 || *argv[2]!='+'&& *argv[2]!='-') 
    {
        printf("usage: 可执行文件名  文件名  +/-");
        return 0; 
    } 
    //以读二进制文件的方式打开指定文件 
    if((fpr=fopen(argv[1],"rb"))==NULL)
    {
        printf("cannot open this file");
        return 0;
     } 
     //以读写二进制文件的方式打开指定文件
     //因为会不断对fpw进行写操作【逐字符写】,
     //为避免后一次写操作覆盖了前一次内容,不可使用"w+" 
     if((fpw=fopen(argv[1],"rb+"))==NULL) 
     {
         printf("cannot open file");
         return 0;
     }
     
     //逐字符读取文件fpr中,直至到达文件尾(EOF表示文件尾,值为-1)
     while((ch=fgetc(fpr))!=EOF) 
     {
         //将读取到的字符加密【与k按位异或】后写到文件fpw中 
         fputc(ch^key,fpw);
        /*
        当第三个参数为+【加密】时,
        更新密钥key=ch,使对下一个字符的加密密钥总是前一个字符
        当第3个参数为-【解密】时,
        更新key=ch^k,反向操作,使fputc()中有(ch^k)^k=ch,达到解密的目的 
        */ 
        key=(*argv[2]=='+')?ch:ch^key;
     } 
     fclose(fpr);
     fclose(fpw);
     return 0;
 } 

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢