我想知道如何使用密钥文件进行XOR加密,而不是仅使用单个数字进行k。我发现这个问题的挑战是:
我的代码包含在下面:
while ((c = fgetc(in)) != EOF) { //problem lies here
k = fgetc(k); // <- ERROR: incompatible integer to pointer conversion assigning to 'FILE *
fputc(c ^ k, out);
}
答案 0 :(得分:1)
当你到达密钥文件的末尾时,请回到开头。
您还需要为从密钥文件中读取的字符使用不同的变量,而不是重复使用k
。
while ((c = fgetc(in)) != EOF) {
int kc = fgetc(k);
if (kc == EOF) {
rewind(k);
kc = fgetc(k);
}
fputc(c ^ kc, out);
}
这种技术适用于解密,因为XOR是对称的。 (c ^ kc) ^ kc == c