[英]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.