簡體   English   中英

在實現基因密碼方面需要幫助

[英]Need Help in implementation of vigenere cipher

我需要實施Vigenere密碼的幫助。 我的輸入字符串“ Cat&Dog”的鍵為“ abc”,應返回“ Cbv&Eqg”,但是我得到的“ cat&eqg”的代碼如下所示。

public class Main {

    public static void main(String[] args) {
        String a = "Cat&dog";
        String b = "abc";
        String c = encrypt(a , b);
        System.out.println(c);
    }

    public static String encrypt (String text, String key){
        String result = "";
        for (int i = 0, j = 0; i < text.length(); i++){
            char cur = text.charAt(i);
            if (cur > 'a' && cur < 'z'){
                result += (char)((cur + key.charAt(j) - 2 * 'a') % 26 +'a');
                j = ++j % key.length();
            }
            else if (cur <= 'A' && cur >= 'Z'){
                result += (char)((cur - key.charAt(j) -2 * 'a') % 26 +'A');
                j = ++j % key.length();
            }
            else {
                result += text.charAt(i);
            }
        }
        return result;
    }
}

您的情況else if(cur <= 'A' && cur >= 'Z')永遠不會成立。 沒有x x <= 65 && x >= 90

而且,您無需減去“ A”並在大寫字母的情況下添加密鑰。

所以這里的解決方案:

public static String encrypt (String text, String key){
    String result = "";
    for (int i = 0, j = 0; i < text.length(); i++){
        char cur = text.charAt(i);
        if (cur >= 'a' && cur <= 'z'){
            result += (char) ((cur + key.charAt(j) - 2 * 'a') % 26 + 'a');
        }
        else if (cur >= 'A' && cur <= 'Z'){
            result += (char) ((cur - 'A' + key.charAt(j) - 'a') % 26 + 'A');
        }
        else {
            result += text.charAt(i);
        }
        j = ++j % key.length();
    }
    return result;
}

“ Cat&Dog”機智密鑰=“ abc”的輸出:

CBV和EQG

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM