3

ランダム化されたシフトパターン暗号化である単純な暗号化アルゴリズムを作成しようとしています。すべての文字の配列に基づいて作成し、Collections.shuffleを使用して、それに一致させます。ただし、出力テキストは入力と同じであるため、配列はシャッフルされていないようです。

これが私の方法です

static void encrypt(String s)
    {
        //Define variable for indexOf output
        int n;

        //Encrypted output
        String output = "";

        //Shuffle array to create random replacements
        Collections.shuffle(Arrays.asList(alphashuff));

        //Create new string
        String alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        for (int index = 0; index < s.length();index++)
        {
            char aChar = s.charAt(index);
            n = alpha.indexOf(aChar, 0);

            if(n == -1)
            {
                output = output + aChar;
            }
            else
            {
                output = output + alphashuff[n];
            }

        }

        //Print encrypted string to console
        System.out.println("Encrypted Text: " + output);
    }
4

2 に答える 2

5

配列をシャッフルするのではなく、配列を使用して作成されたリストです。シャッフルに送信する前にリストを作成します。

//I'm assuming alphashuff is a char[]
List<Character> lstCh = new ArrayList<Character>();
for(char c : arrCh) {
    lstCh.add(c);
}
Collections.shuffle(lstCh);
//...
else
{
    output = output + lstCh.get(n);
}
于 2012-10-12T05:53:06.750 に答える
1
String[] alphashuff = ...;
List list = Arrays.asList(alphashuff);
Collections.shuffle(list);

このリストは現在シャッフルされており、alphashuff の値で構成されています。

そして、これを次のように使用します-output = output + list.get(n);

于 2012-10-12T05:57:01.897 に答える