0

特定のテキストを解読したい。文字列に文字が見つかったら、アルファベットの次の文字に置き換えたいと思います。それから次のラウンドでは、2 番目の次の文字との置換が必要です。

a -> b

k -> l

次に、2 番目のラウンドで試行する必要があります。

a -> c

k -> m

文字に関する問題は、あらゆる種類の奇妙な文字が含まれていることであり、az に遭遇して置き換えようとすると、奇妙な記号に置き換えられます。

AZ からある種の循環リストを作成するのを手伝ってくれる人はいますか? 次のスニペットでは、a から z を含むリストを作成します。ループ内で文字が選択され、そのインデックスが検索されて「調整」され、新しい文字が取得されます。しかし、うまくいきません。(リストが循環していない理由の 1 つ)

public static void decipher(){
    String cyphertext = "aVaqrprzoreoeratraWhyvhfraJnygreUbyynaqreqrgjrroebrefinaRqvguZnetbganneNzfgreqnzNaarjvytenntzrrxbzraznnezbrgabtrrarragvwqwrovwbznoyvwiraBznmnyurgzbrvyvwxuroorabzNaarabtrracnnejrxraqnnegrubhqrafpuevwsgRqvguSenaxvarraoevrsnnaTregehqAnhznaauhaiebrtrerohhezrvfwrvaSenaxshegnzZnva";
    char[] plaintext = new char[cyphertext.length()];

    List<Character> a2z = new ArrayList<Character>(26);
    for (char c = 'A'; c <= 'Z'; c++){
        a2z.add(Character.valueOf(c));
    }

    for(int i = 1; i < 26; i++){
        for(int j = 0; j < cyphertext.length(); j++){
            char currentChar = cyphertext.charAt(j);
            int newCharIndex = a2z.indexOf(currentChar)+i;
            plaintext[j] = a2z.get(newCharIndex);
        }
    }
}
4

3 に答える 3