Java 从登录名传递密码
我正在使用java框架创建一个小项目。 在登录框中,我从用户处接收用户名和密码。 在检查有效性之后,我必须将这个用户名和密码传递给另一个框架的构造函数(称为UserFrame)。 我像绳子一样传递,似乎不安全。 在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.
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
。