【发布时间】:2011-12-21 23:57:07
【问题描述】:
我正在创建一个非常基本的加密程序,使用 XOR 来加密用户文件并再次解密。然而,发生的情况是,当我加密时,我得到一长串相同的 6 个字母,而当我尝试解密时它不起作用。谁能发现问题?另外,我想用我自己的基本加密方法替换 XOR,但除了密钥之外保留相同的代码。这可能吗?谢谢!
#include <stdio.h>
int main(int argc, char*argv[])
{
FILE *fp1, *fp2;
char* key;
int c;
key = argv[1];
if(*key != '\0')
{
fp1 = fopen(argv[2],"rb");
if(fp1 != NULL)
{
fp2 = fopen(argv[3],"wb");
if (fp2 != NULL)
{
while((c=getc(fp1)!=EOF))
{
if(!*key)key = argv[1];
c ^=*(key++);
putc(c, fp2);
}
fclose(fp2);
}
fclose(fp1);
}
}
return 1;
}
【问题讨论】:
-
你的缩进可以改进;例如:第一个 fopen/fclose 位于不同的缩进,第二对位于相同的缩进 ...
-
附注:检查
argc并确保您有足够的论据来处理可能是个好主意 -
return 0;通常用于向操作系统表示成功;return 1;可能表示失败。您可能需要查看您的返回值。 -
将修复仅用于我自己工作的缩进我应该在发布之前修改它抱歉! Return 1 将被设置为 0。但是不明白你对 argc 的意思。我的代码不正确吗?
-
如果您没有提供正确数量(和类型)的参数,您的程序将“爆炸”。试试
yourprogram topsecretkey input.txt,不要说在哪里写编码数据。
标签: c encryption file-io xor