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[] encrypt = password.toCharArray();
for (int i = 0; i < encrypt.length; i++) {
encrypt[i] = (char) (encrypt[i]);
}
return String.valueOf(encrypt);
}
}
String decrypt (String password) {
if (password.length()<minLength) {
return password;
} else {
char[] decrypt = password.toCharArray();
for (int i = 0; i < decrypt.length; i++) {
decrypt[i] = (char) (decrypt[i]);
}
return String.valueOf(decrypt);
}
}
boolean isValidLength (String password) {
if (password.length()<minLength) {
return true;
} else {
return false;
}
}
int getMinLength(){
return minLength;
}
}
假设加密我的密码(尚未制作驱动程序),但不确定我是否正确使用了我的变量(加密和解密)。加密和解密变量是这样的,密码会将索引更改为用户键入的内容,也不知道,但我想在某处使用反向清除方法,但不确定在哪里?有帮助吗?需要有人告诉我,我的节目是否已关闭,或是否已接近。
答案 0 :(得分:2)
警告 - 这是良好警告 - 是因为shadowing
该行:
char[] encrypt = password.toCharArray();
使[static] 成员变量 [也称为] encrypt
在该方法中被遮蔽。因此&#34;置换值&#34;永远不会使用,所使用的算法将会非常突破。 (它会突然崩溃,因为&#34;排列值&#34;在加密和解密时不一样。解密算法还有另一个问题,因为它甚至使用[相同]&#34;置换值&# 34;,但这是另一件需要解决的问题。)
解决方案:
encryptionKey
进行排列)。Encryption.encrypt
来引用[静态] 成员变量。当然,请查看算法。不需要Encryption.decrypt
并保留它将允许引入其他错误。
快乐的编码。