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来完成循环。
只是检查因为我的程序非常关闭,我需要一些帮助才能让它重回正轨。下面是编译时的样子。
答案 0 :(得分:3)
仔细看看这一行。
arrayEncrypted[i] = (char) (arrayEncrypted[i]);
除非我完全误解了它,否则你在做什么......实际上,绝对没有。您将在阵列中的位置i
处找到角色,并将其放置在i
位置。你想做的是像
encryptionResult[i] = (arrayEncrypted[encrypt[i]]);
当您尝试重新排列字符时。