我正在创建一个基于密码的基本登录系统。它使用MD5来保护密码。正确的密码是" csk" (没有引号)。如果有人正确输入,他可以访问本地计算机中的key.html文件。但如果有人连续三次输入错误的密码,他就会被禁止使用#34;从登录再次。但是我构建的设计仅为该特定会话禁止用户。如果他再次打开终端,它从一开始就开始。如果变量计数从上次开始大于3(三),那么通过void main()执行的程序将显示"您被禁止" 。我想保持基本,不要使用JDBC和SQL等。此外,这是本地应用程序,而不是基于Web的应用程序。我很困惑我应该采取什么方法。这是我编写的代码:
import java.math.*;
import java.security.*;
import java.io.*;
import java.util.*;
import java.net.HttpURLConnection;
public class pwd {
public static void main(String[] args)throws NoSuchAlgorithmException, IOException, InterruptedException {
int count = 1;
boolean run = true;
while (run && count<4){
System.out.println("Enter the password");
Scanner kb = new Scanner(System.in);
String pass = kb.nextLine();
String pd = "ea0882721f7f44384ce772375696f9a6"; //Password is "csk" without quotes geeks, this is it's MD5
// so enter "csk" in the terminal
// to run the program on execution
String md5sum = md5(pass);
String os = System.getProperty("os.name");
boolean o = false;
int win = os.indexOf("Windows");
if (md5sum.equals(pd)){
System.out.println("You've logged in successfully, get the Key now");
String url = "file:///C:/Users/<username>/Desktop/key.html"; // example www
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
run = false;
}
else {
System.out.println("You've entered the wrong password, try again.");
System.out.println();
run = true;
if (count>=3) {
System.out.println("You are banned from logging in, due to repeated unsuccessful login attempts.");
}
++count;
}
}
}
public static String md5(String input)throws NoSuchAlgorithmException, IOException {
String md5 = null;
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(input.getBytes(), 0, input.length());
md5 = new BigInteger(1, digest.digest()).toString(16);
return md5;
}
}
编辑:我没有必要将MD5哈希改为其他任何东西,它只是一个基本的哈希。
答案 0 :(得分:0)
您只需使用java.io.FileWriter
FileWriter writer = null;
String text = "username";
try{
writer = new FileWriter("banned.txt", true);
writer.write("\r\n");
writer.write(text,0,text.length());
}catch(IOException ex){
ex.printStackTrace();
}finally{
if(writer != null){
writer.close();
}
}
上面的代码允许您在文件中添加一行。
要阅读该文件,您可以这样做(java.io.BufferedReader
):
BufferedReader reader = new BufferedReader(new FileReader("banned.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
// check the username here
}
答案 1 :(得分:0)
哼哼你想做什么可以做但你必须创建一种&#34;登录页面&#34;因为它现在(使用您提供的代码)没有涉及用户信息。
要保存禁令的重要信息,您可以例如在文件中保存布尔值(或者在用户时保存用户)并在代码开头读取同一文件以了解用户是否禁止或不。在这种情况下,您必须更改代码以在尝试新输入代码之前添加禁止或不禁用的信息;)
如果您没有登录页面,那么没有用户一旦禁止某人就没有人能够再登录:)
PS:Java类以大写字母开头而不是pwd
,而Pwd
通常是
PS2:你的计数总是会增加,因为它不在其他地方;)因此即使用户禁止,每次尝试新代码都会增加;)