2014-05-11 37 views
-1

描述:
我想寫一個簡單的程序的樂趣,將讀取一個短語然後xor加密,然後輸出加密的短語到終端窗口。請參閱下面的代碼獲取更多信息非常長的字符串輸入到異或加密程序

code:
#include #include using 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

你在混淆字節和位。 – SLaks

+1

一旦你使用了「鑰匙」的11個字符,你需要** RE **使用它們。例如字符串的字符1-11與密鑰的字符1-11進行異或。字符串的字符12-23再次與字符1-11等異或。注意,使用這樣的固定字符串永遠不應該被稱爲「加密」,它最好比穀物盒解碼器環要好。 –

+0

哈哈,有趣的評論馬克B.而且我明白。正如我所說這是爲了好玩,我正在學習什麼是加密。感謝您的迴應 – user2444074

回答

2

您只循環超過10個字符,如循環for (int i=0; i<10; i++)所定義。你想循環你的整個字符串長度,然後用你的密鑰mod 11異或。

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