通过Java读取变量来禁止用户

时间:2014-04-30 13:21:48

标签: java passwords md5

我正在创建一个基于密码的基本登录系统。它使用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哈希改为其他任何东西,它只是一个基本的哈希。

2 个答案:

答案 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:你的计数总是会增加,因为它不在其他地方;)因此即使用户禁止,每次尝试新代码都会增加;)