2016-02-26 57 views
3

解聘掃描儀和提示爲V @ genere加密我:這個vigenere密碼在Java中可能嗎?

for(int i = 0; i < text.length(); i++){ 
    int first = text.charAt(i); 
    for(int j = 0; j < key.length(); j++){ 
     int second = key.charAt(j); 
     int that = first + (second % 26); 
     output = output + (char)that; 
    } 
} 

我在這裏的理念,爲V @ genere加密是有一個for循環捕獲明文字的每個字符。然後讓第二個for-loop捕獲關鍵字的每個字母。如果明文「first」代表該信件的原始位置。關鍵字將表示明文字符的每個單獨的移位。這可能嗎?

+0

請正確縮進您的代碼以便它可讀。 –

+0

....這次我會爲你做,但是在將來,請你自己投入這項重要的努力。 –

+0

解決這個問題和類似問題的關鍵是試驗和試用。那麼當你嘗試這樣做時會發生什麼? –

回答

0

你的問題是你有2個循環,但你應該只有1個循環。

而不是密鑰的循環,你應該使用關鍵字長度的modulous來給你的迭代轉變。

固定邏輯(以及變量給予合理的名稱):

for (int i = 0; i < text.length(); i++){ 
    int letter = text.charAt(i); 
    int shift = key.charAt(i % key.length()) - 'A'; 
    int encrypted = (letter + shift) % 26 + 'A'; 
    output = output + (char)encrypted; 
} 

與此代碼的主要區別和你的是表達i % key.length(),通過該鍵的字母連續循環以確定每個字母的移位,其。