2015-10-23 23 views
0

作爲一個總初學者我一直在試圖寫在C++XOR加密問題......總初學者

XOR加密一些代碼,我遇到的問題是,當解密時只有消息的一半實際上被正確翻譯

如果有人能告訴我什麼錯誤,以及如何解決這個問題我將不勝感激

我還附上顯示什麼顯示錯誤 Qoóß®ó»¥Á╝©控制檯上®50¤ä┌Ð╬┘ð╝ 非加密[í┐┐┐┐½½╠╠╠╠任何關鍵都可以繼續。 。 。

我的代碼如下;

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    char string[] = "non-encrypted_message"; 
    char key[] = "A"; 
    for (int i = 0; i < sizeof(string); i++) 
    { 
     string[i] = string[i]^key[i];  //Performing the encryption with XOR operator 
     cout << string[i];     //Output of encrypted message 

    } 
    cout << "\n"; 

    for (int j = 0; j < sizeof(string); j++) 
    { 
     string[j] = string[j]^key[j]; 
     cout << string[j]; 
    } 
    cout << "\n"; 
    return 0; 
} 
+0

不要在你的問題中鏈接圖像。請複製並粘貼文本。 –

+0

您還應該瞭解C字符串中的終止字符,並決定是否希望通過加密來更改它。 –

回答

2

key的大小爲2只(包括終止字符),但你索引它在你的循環,導致其出界。要麼使它成爲一個單獨的char,並且不要對它進行索引,或者確保數組足夠大。我建議使用std::stringstd::arraystd::vector哪些好的調試器將會檢查你。

+0

非常感謝,這對我們有很大的幫助 –

1

將key聲明爲char並且不使用索引。

char key = 'A'; 
... 
string[i] = string[i]^key;