Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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_String_Swing_Login_Passwords - Fatal编程技术网

Java 从登录名传递密码

Java 从登录名传递密码,java,string,swing,login,passwords,Java,String,Swing,Login,Passwords,我正在使用java框架创建一个小项目。 在登录框中,我从用户处接收用户名和密码。 在检查有效性之后,我必须将这个用户名和密码传递给另一个框架的构造函数(称为UserFrame)。 我像绳子一样传递,似乎不安全。 在java中,有没有一种很好的方法来实现从一个帧到另一个帧的密码传递 String user=userField.getText(); String pwd= passField.getText(); if (user.equals("username") && pwd.

我正在使用java框架创建一个小项目。 在登录框中,我从用户处接收用户名和密码。 在检查有效性之后,我必须将这个用户名和密码传递给另一个框架的构造函数(称为UserFrame)。 我像绳子一样传递,似乎不安全。 在java中,有没有一种很好的方法来实现从一个帧到另一个帧的密码传递

String user=userField.getText();
String pwd= passField.getText();
if (user.equals("username") && pwd.equals("password"))
      Home x= new Home(user,pwd);

请注意,
JPasswordField#getPassword()
返回
char[]
,因此您可以将密码作为字符数组处理(假设您使用的是JPasswordField)。要么这样,要么以某种方式对其进行哈希,然后传递哈希代码


编辑
你说:


是的,我使用的是JPasswordField。但是为了简单起见,我使用了getText(),因为它返回一个字符串。当从一个帧传递到另一个帧时,字符数组是否比字符串更安全

不要使用
getText()
,因为这正是您提出问题的原因:您根本不应该将密码作为字符串处理,因为这会增加密码发现的难度。查看JPasswordField类的API,您将看到
getText()
由于同样的原因被弃用。一般来说,您不应该使用不推荐的方法


编辑2 你说:


嗯。现在我明白了。但是如何将密码从一个帧传递到另一个帧呢?传递char[]是否可以保证安全性

据我所知,没有什么可以保证安全性,但将密码作为字符数组处理确实可以提高安全性。使用char[]构造函数参数或接受char[]参数的setter方法。

您可以使用可用的getPassword()方法。但此方法返回类型为char数组。您可能希望将其转换为字符串

char a[]= jPasswordField1.getPassword();
 String pswd = new String (a);
或者简单地说

String pswd= new String (jPasswordField1.getPassword());
将id、pswd作为

new JFrame2(id,pswd);

我一直在做这样的事情。您可能不想传递未加密的字符串,编写加密类也不太麻烦。有关加密的指南,请参阅本页:

我会对条目上的文本进行加密,然后传递生成的字节数组。

passField.getText()已被弃用,因此我不建议使用它。相反,请尝试使用passField.getPassword(),如下所示:

String pwd= new String(passField.getPassword());

是的,我使用的是JPasswordField。但是为了简单起见,我使用了getText(),因为它返回一个字符串。当从一帧传递到另一帧时,字符数组是否比字符串更安全?确定。现在我明白了。但是如何将密码从一个帧传递到另一个帧呢?传递char[]是否保证安全?@user2670866:请参阅编辑2我直接使用了getText()方法。然而,我的主题是将字符串从一帧传递到另一帧?java处理任何自动编码方法吗?或任何类似“密码”的对象?是否使用swing?您应该提供一些代码来演示这个问题。同样,不要将
getText()
与JPasswordFields一起使用。API会告诉您,它已被弃用。谢谢。您知道java是强类型语言,什么类型是
passField
userField
我们无法想象,为了获得更好的帮助,最好尽早发布一个,这可能是您自己发现的问题。在这种情况下,登录应该是模态
JDialog
JOptionPane