【发布时间】:2023-12-11 20:32:01
【问题描述】:
我想了解如何使用密钥文件进行 XOR 加密,而不是仅使用单个数字进行 k。我发现这个问题的挑战是:
- 我们如何才能使用密钥文件逐字节加密输入文件?
- 我们如何检查密钥是否比消息长?
- 我们能否使用相同的 XOR 运算恢复原始消息?
我的代码如下:
while ((c = fgetc(in)) != EOF) { //problem lies here
k = fgetc(k); // <- ERROR: incompatible integer to pointer conversion assigning to 'FILE *
fputc(c ^ k, out);
}
【问题讨论】:
-
1.使用循环。 2.为什么重要,回到关键的开头。 3. 是的,XOR 是它自己的逆。
-
如果明文文件比密钥长,你总是可以只包装异或密钥。
-
k = fgetc(k);。您对文件和从中读取的值使用相同的变量。 -
具体来说,您需要一个可以阅读的
int d;。d = fgetc(k); -
2.如果在从输入文件中读取
EOF之前先从密钥文件中读取EOF,那么密钥文件太短了。
标签: c file encryption stdin xor