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在数组中的位置找到的字符,并将其放置在位置i。你想做的是像

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

当您尝试重新排列字符时。

于 2012-05-13T17:38:41.950 回答