如何接受字符串作为XOR加密程序的关键?

时间:2015-01-14 06:05:52

标签: c++ encryption xor

我试图在加密/解密程序中使用完整用户输入的字符串作为密钥。我也试图弄清楚如何输出加密作为原始输入的单词但只是空格,然后再次加密(解密)以使单词恢复正常。

因此,例如用户可以输入他们自己的句子(hello world)和他们自己的密钥(testkey),然后程序使用testkey对其进行加密,输出结果为" h e l l o w o r l d"例如。然后再次加密并返回" hello world。"

即使您可以帮助获取密钥或加密输出的用户输入,也可以获得任何帮助。谢谢!

#include <iostream>
#include <cstring>

using namespace std;

int main(){

 string sentence = "";
 string encrypted = "";
 string unencrypt = "";
 char key[] = "";

 cout << "Enter sentence: ";
 getline(cin, sentence);

 cout << "Enter key: ";
 cin >> key;

 for (int temp = 0; temp < sentence.size(); temp++){
  encrypted += sentence[temp] ^ (int(key) + temp) % 2;
 }
 cout << "Encrypted = " << encrypted;

 for (int temp = 0; temp < sentence.size(); temp++){
  unencrypt += sentence[temp] ^ (int(key) + temp) % 2;
 }
 cout << endl;
 cout << "Unencrypted = " << unencrypt;


 return 0;

}

1 个答案:

答案 0 :(得分:0)

检查密钥派生功能。通常,这些密钥用盐进行散列,并且具有固定大小的散列值可以用作密钥。盐是随机的。

参见http://en.wikipedia.org/wiki/PBKDF2 http://en.wikipedia.org/wiki/Key_derivation_function 它是导出密钥的标准。