我在下面得到了下面的代码来做一个简单的密码(散列)检查功能。但是我遇到了一个问题,代码似乎只适用于文件中的单行数据,该检查适用于Line1,但不适用于Line2,我不确定哪里出错。数据显示如下Java登录码从文件中读取多行不工作
的结果应该是hashedP只要符合1号线或2,但是最终匹配一号线仅
260670134225f2a24b59121739fec73584b0ddb6b49c39e31bd1df5483ac144d //Line1
cf80cd8aed482d5d1527d7dc72fceff84e6326592848447d2dc0b0e87dfc9a90 //Line2
代码:
public static void LoginMenu() {
System.out.println("Please Enter Your Password: ");
Scanner UserPass = new Scanner(System.in);
String UserP = UserPass.nextLine();
String hashedP = Utility.getHash(UserP);
File file = new File("admin.dat");
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String fileline = scanner.nextLine();
if (!(fileline.equals(hashedP))) {
System.out.println("Login Failed!");
LoginMenu();
}
else {
System.out.println("Login Successful.\n");
AdminMenu();
}
}
scanner.close();
}
catch (FileNotFoundException exc) {
exc.printStackTrace();
}
}
究竟什么是您的预期输出,什么是实际输出? – 2015-04-06 10:29:51
预期的输出应该是散列P匹配文件中的任何行,但它最终只匹配Line1 – 2015-04-06 11:28:31