通过递增字符来加密文本文件

时间:2017-08-16 09:13:44

标签: c++ encryption filestream caesar-cipher

我需要通过将每个字符加1来加密一个简单的文本文件,即'a'变为'b','b'变为'c'等等,'z'变为'a'。

我按照下面的代码完成了这个,虽然我的大部分输出都是正确的,但在每个文件的末尾似乎都有问题。

例如,当输入文件包含'a b c d'时,生成的输出是'b c d ef',而不是应该是'b c d e'的答案。我似乎无法弄清楚这一点。

这是我的加密功能代码:

src

2 个答案:

答案 0 :(得分:-1)

使用这种方式可以实现移位密码:

while(!in_stream.eof()) {
    if (letter>='a' && letter<='Z')
        letter = (letter+1)%'Z' + 'a';
    out_stream << letter;
}

减少代码中的冗余并使其尽可能紧凑,代码中有许多无用的条件。

主要逻辑在于加密来自... Z的字符,你无法预测文本文件中的其他字符,如\ n \ 0等,所以它们根本不应该被处理。

答案 1 :(得分:-1)

我可以推荐这段代码

while(!in_stream.eof()) {
       if ((letter>='A' && letter<='Y')|| (letter>='a' && letter<='y'))
            letter = (letter+1);
       else if(letter== 'Z' || letter== 'z')
            letter =(letter-25);
    out_stream << letter;
}