描述:
我正在尝试编写一个简单的程序,以便在短语中读取然后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
帮助:
如果您有任何想法如何解决这个问题,请举例说明我遗失的内容或需要解释的内容。
答案 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];
}