繁体   English   中英

将两个文件异或为第三文件

[英]XOR Encryption of two files to third file

我正在尝试根据本教程进行操作: http : //forum.codecall.net/topic/48889-c-tutorial-xor-encryption/

但是我没有想到双重加密后会给我相同文件的功能。 我尝试了很多版本并进行了更正,但没有一个版本对我有用。 这是我当前的代码:

void encrypt (FILE* in, FILE* out, FILE* key){
    int a,b;
    while ((a = fgetc(in)) != EOF){

        if ((b = fgetc(key)) == EOF){
            rewind(key);
            b = fgetc(key);
        }
        int d = a^b;
        printf("%c XOR %c is %c\n",a,b,d);


        fputc(d,out);

    }
    printf("end of encrypt\n");
}

有人知道如何进行更改以及如何更改它才能起作用?

当然,您可以忽略打印。

根据要求提供完整代码: http//pastebin.com/4GHgb9gw (不长,为53行)。

在我看来,您需要倒回密钥文件。

您的主要内容如下:

int main(){
    FILE* out = fopen("out.txt", "ab+");
    if (out == NULL){
        out = fopen("scores.dat", "wb");
    }
    FILE* in = fopen("in.txt", "rb");
    FILE* key = fopen("key.txt", "rb");
    FILE* end = fopen("end.txt", "ab+");
    if (end == NULL){
        end = fopen("scores.dat", "wb");
    }

    encrypt(in,out,key);   
    // Need to rewind key file and out file again before re-processing.
    encrypt(out,end,key);
    return(0);
}

当您打开密钥文件时,它是从文件开头开始的。

因此,当您进行第二次加密时,您需要将其倒带,以使其从文件的开头重新开始,然后再处理加密的文件。 这样,将在相同的重复步骤中完成相同的异或序列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM