加密程序改变字符串的索引

时间:2012-05-13 17:30:23

标签: java permutation

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来完成循环。

只是检查因为我的程序非常关闭,我需要一些帮助才能让它重回正轨。下面是编译时的样子。

Compiled

1 个答案:

答案 0 :(得分:3)

仔细看看这一行。

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

除非我完全误解了它,否则你在做什么......实际上,绝对没有。您将在阵列中的位置i处找到角色,并将其放置在i位置。你想做的是像

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

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