xor加密程序的字符串输入很长

时间:2014-05-11 02:42:56

标签: c++ encryption xor

描述:
我正在尝试编写一个简单的程序,以便在短语中读取然后xor加密它然后将加密的短语输出到终端窗口。请参阅以下代码了解更多信息。

代码:
    #包括     #包括     使用namespace std;

int main ()
{
string mystr;
cout << "What's the phrase to be Encrypted? ";

char key[11]="ABCDEFGHIJK";  //The Encryption Key, for now its generic
getline(cin, mystr);

string result;

for (int i=0; i<10; i++) {
    result.push_back(mystr[i] ^ key[i]);
    cout << result[i];
}
cout << "\n";
return 0;
}

结果:
上面的代码可以正常工作当我输入一个很长的字符串时,它只加密前10个字符(我认为)。我希望能够输入一个大字符串,用11位密钥对其进行加密,然后将其输出到终端。我该怎么做?

此外:
我在这里问了一个问题,这个问题是这个问题的前言:String input xor encryption program

帮助:
如果您有任何想法如何解决这个问题,请举例说明我遗失的内容或需要解释的内容。

1 个答案:

答案 0 :(得分:2)

您只循环超过for循环for (int i=0; i<10; i++)定义的10个字符。你想循环整个字符串长度,然后用你的密钥mod 11进行异或。

for (int i=0; i<mystr.size(); i++) {
    result.push_back(mystr[i] ^ key[i%11]);
    cout << result[i];
}