使用一个补码加密文件

时间:2016-12-08 05:31:31

标签: c++ encryption stream

我使用C ++文件流来加密文件。在这里,每个读取的字符都是一个补码并写入输出文件:

ifstream input("Normal file");
ofstream output("encrypted file");
char ch;
while (input >> ch)
{
  ch = ~ch;
  output << ch;
}

我使用相同的程序从加密文件恢复普通文件。但是,我发现未加密的文件没有任何空格或返回标记。所以,我把while部分更改为:

while (input >> ch)
{
  ch = isspace(ch) ? ch : ~ch;
  output << ch;
}

直到结果不符合我的预期。我哪里出错了?

1 个答案:

答案 0 :(得分:1)

问题在于你如何阅读文件:

char ch;
while (input >> ch)

默认情况下,流提取器会跳过所有空格。为了让它停止,你可以做类似的事情:

input >> std::noskipws;
在之前

... 开始从流中读取。