Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文件中读取密码以进行身份验证_Java_Passwords - Fatal编程技术网

Java 从文件中读取密码以进行身份验证

Java 从文件中读取密码以进行身份验证,java,passwords,Java,Passwords,我在匹配输入的用户密码和用户的实际密码(如果用户存在)时遇到问题。实际密码作为字符数组存储在文件中。我尝试将数组打印为字符串,但输出与字符数组表示形式相同 以下代码段从文件中读取密码,并将其与用户输入的密码进行比较,以确定用户是否应登录到客户端。文件按以下方式存储数据-“用户”、“密码”、“地址” 文件中的日期示例: radi1006[C@4f1c987b,夏尔郡,SO1 public void checkCredentials(String username, char[] passw

我在匹配输入的用户密码和用户的实际密码(如果用户存在)时遇到问题。实际密码作为字符数组存储在文件中。我尝试将数组打印为字符串,但输出与字符数组表示形式相同

以下代码段从文件中读取密码,并将其与用户输入的密码进行比较,以确定用户是否应登录到客户端。文件按以下方式存储数据-“用户”、“密码”、“地址”

文件中的日期示例:

radi1006[C@4f1c987b,夏尔郡,SO1

    public void checkCredentials(String username, char[] password)
    {

        if(fileExists("users" + File.separator + username + ".txt"))
        {
            FileReader fileR;
            BufferedReader buffR = null;

            try
            {

                fileR = new FileReader("users" + File.separator + username + ".txt");
                buffR = new BufferedReader(fileR);

                String[] info = buffR.readLine().split(", ");    

                if(Arrays.equals(password,info[1].toCharArray()))
                {
                    loginResponse = "success";
                    client = new ClientApplication();
                    client.init();
                }
                else
                {
                    loginResponse = "Wrong username or password.";
                    return;
                }
            }    
            catch (Exception e)
            {

            }
            finally
            {
                try
                {
                    buffR.close();
                }
                catch (IOException e)
                {

                }
            }
        }
        else
        {
            loginResponse = "There is no such user.";
        }
}
文件中的日期示例:

radi1006[C@4f1c987b,郡,SO1

您的问题似乎不是读取和比较值,而是您没有在文件中正确存储密码

[C@4f1c987b
是在
char[]
上调用
.toString()
时得到的

(如果有人提供
[C@4f1c987b
作为密码,您的代码将传递它)

当您从密码字段获取
char[]
并希望将其写入文本文件时,需要将其转换为字符串。本质上:

final String s = new String(password, StandardCharsets.UTF_8);
(这假设我们不太关心安全性,因为
JPasswordField
不返回字符串的原因是该字符串不会以明文形式挂在堆上。请阅读。)

文件中的日期示例:

radi1006[C@4f1c987b,郡,SO1

您的问题似乎不是读取和比较值,而是您没有在文件中正确存储密码

[C@4f1c987b
是在
char[]
上调用
.toString()
时得到的

(如果有人提供
[C@4f1c987b
作为密码,您的代码将传递它)

当您从密码字段获取
char[]
并希望将其写入文本文件时,需要将其转换为字符串。本质上:

final String s = new String(password, StandardCharsets.UTF_8);

(这假设我们不太关心安全性,因为
JPasswordField
不返回字符串的原因是该字符串不会以明文形式挂在堆上。请阅读。)

密码变量的数据类型是什么?逻辑中缺少的是密码的任何加密。将密码以明文形式存储在文件中是危险的,如果这样做,您可能需要重新考虑您的方法。@GregKopff我正在从返回字符arr的JPAssword字段传递值唉。@TimBiegeleise我知道,但这只是一门编程课程。如果
[C@4f1c987b
确实在文件中,那么看起来您没有正确地将密码写入文件。
[C@4f1c987b
是在
char[]上调用
.toString()
时得到的
value。您的
password
变量的数据类型是什么?您的逻辑中缺少的是对密码的任何加密。将密码以明文形式存储在文件中是危险的,如果这样做,您可能需要重新考虑您的方法。@GregKopff我正在从返回cha的JPasswordField传递值Racker数组。@TimBiegeleise我知道,但这只是一个编程课程。如果
[C@4f1c987b
确实在文件中,那么看起来您没有正确地将密码写入文件。
[C@4f1c987b
是在
char[]上调用
.toString()
时得到的
value。谢谢,这解释了一切。谢谢,这解释了一切。