2014-05-11 18 views
-2

描述:
我正在寫/探索xor加密/解密在c + +代碼的樂趣。我詢問了有關這兩個主題的以前的問題:Very long string input to xor encryption programString input xor encryption program爲什麼我只能解密輸入流的前兩個字符?

我已經開發了下面的代碼,將提示用戶輸入一個字符串,它應該用代碼中的鍵異或字符串。這種加密方式的作用是我應該能夠輸入一個字符串並獲得一個加密的字符串。如果我通過相同的函數運行相同的加密字符串,我應該返回原始字符串。請參閱以下工作代碼。

#include <iostream> 
#include <string> 
using namespace std; 

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

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

string result; 

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


} 
return 0; 
} 

問題:
我只能把長的字符串2個字符到程序並能夠有一個加密的字符串,返回長度爲2的。如果我把了字符到程序中我會只返回前兩個原始人物。爲什麼是這樣?

請回答清楚的解釋和或例子。謝謝

+2

'char key [11] =「ABCDEFGHIJK」; '應該拋出一個錯誤!數組最後只能包含10個字符和一個空字符。 – vidit

+2

輸入字符串中的第三個字符是什麼? –

+0

你的權利它的兩個長期,原因是因爲我有不同的東西在那裏是11,但我不想在互聯網上分享我的密碼,所以我改變了它。 – user2444074

回答

0

謝謝用戶 - DNT提出這個建議,我把11從:
char key [11] =「ABCDEFGHIJ」,讓編譯器算出來。 該建議糾正了這個問題。由於這只是一個探索性/有趣的項目,所以任何人都可能需要最終代碼。

#include <iostream> 
#include <string> 
using namespace std; 
int main (void) 
{ 
while (1) 
{ 
string mystr; 
cout << "What's the phrase to be Encrypted? "; 

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

string result; 

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


} 
return 0; 
} 
相關問題