【问题标题】:Very long string input to xor encryption program很长的字符串输入到异或加密程序
【发布时间】:2014-06-28 14:20:07
【问题描述】:

说明:
我正在尝试编写一个有趣的简单程序,它将读取一个短语然后对其进行异或加密,然后将加密的短语输出到终端窗口。有关更多信息,请参见下面的代码。

代码:
#包括 #包括 使用命名空间标准;

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

帮助:
如果您知道如何解决此问题,请举例说明我缺少什么或我需要解释什么。

【问题讨论】:

  • 你混淆了字节和位。
  • 一旦您使用了“key”的 11 个字符,您需要RE使用它们。例如字符串的字符 1-11 与键的字符 1-11 进行异或运算。字符串的 12-23 字符再次与字符 1-11 等进行异或运算……请注意,使用这样的固定字符串最多不应该被称为“加密”,它比谷物盒解码器环略好。
  • 大声笑,有趣的评论 Marc B。我明白了。正如我所说,这是为了好玩,我正在学习什么是加密。感谢您的回复

标签: c++ encryption xor


【解决方案1】:

您只会循环超过 10 个字符,如您的 for 循环 for (int i=0; i&lt;10; i++) 所定义。您想遍历整个字符串长度,然后与您的密钥 mod 11 进行异或。

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

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多