1
public class Encryption {
private static final int[] encrypt = {2, 9, 3, 4, 6, 8, 1, 0};
private static final int[] decrypt = new int[8];
private static final int minLength = 10;

String encrypt (String password)    {
    if(password.length()<minLength) {
        return password;

    }   else {
        char[] arrayEncrypted = password.toCharArray();
        for (int i = 0; i < encrypt.length; i++)    {
            arrayEncrypted[i] = (char) (arrayEncrypted[i]);

            }
            return String.valueOf(arrayEncrypted);

    }
}

String decrypt (String password)    {
    if (password.length()<minLength)    {
        return password;

    }   else {
        char[] arrayDecrypted = password.toCharArray();
        for (int i = 0; i < arrayDecrypted.length; i++) {
            arrayDecrypted[i] = (char) (arrayDecrypted[i]);
        }
        return String.valueOf(arrayDecrypted);
    }
}

boolean isValidLength (String password) {
    if (password.length()<minLength)    {
        return true;

    }   else    {
        return false;
    }
}

int getMinLength(){
    return minLength;
}

}

このプログラムは、古典的な順列関数を使用してデータを暗号化することを想定しています。暗号化クラスで使用する暗号化関数は(2、9、3、4、6、8、1、0)のみです。

パスワードの各文字は、順列に従って新しいインデックスに移動されます。順列では 2 の直後に 9 が続くため、パスワードのインデックス 2 の文字をインデックス 9 に再割り当てする必要があります。同様に、インデックス 9 の文字をインデックス 3 に再割り当てする必要があります。最後の再割り当ては、もともとインデックス 0 にあった文字をインデックス 2 に配置することで、サイクルを完了します。

私のプログラムが非常にずれているため、チェックしているだけです。元に戻すには助けが必要です。以下は、コンパイル時にどのように見えるかを示した図です。

編集済み

4

1 に答える 1

3

この行をよく見てください。

arrayEncrypted[i] = (char) (arrayEncrypted[i]);

私が完全に誤解していない限り、あなたがそこでしていることは... 実際、まったく何もありません. i配列内のposition で見つかった文字を取得し、それを position に配置していiます。あなたがしたいことは次のようなものです

encryptionResult[i] = (arrayEncrypted[encrypt[i]]);

文字を並べ替えようとしているとき。

于 2012-05-13T17:38:41.950 に答える