1

我正在使用 java 框架来创建一个小项目。在登录框架中,我收到用户的用户名和密码。检查有效性后,我必须将此用户名和密码传递给另一个框架的构造函数(称为 UserFrame)。我作为字符串传递,它似乎不安全。有没有一种好方法可以在java中实现将密码从一帧传递到另一帧?

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

4 回答 4

1

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

String pwd= new String(passField.getPassword());
于 2013-10-11T01:54:49.627 回答
1

请注意,JPasswordField#getPassword()返回char[],因此您可以处理提供给您的密码(假设您使用的是 JPasswordField):作为 char 数组。要么以某种方式散列它并传递散列码。


编辑
你状态:

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

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


编辑 2 你说:

好的。现在我明白了。但是如何将密码从一帧传递到另一帧呢?通过 char[] 是否保证安全?

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

于 2013-08-10T16:59:57.287 回答
0

我一直在做这样的事情。您可能不想传递未加密的字符串,并且编写加密类并不太繁重。查看此页面以获取有关加密的指南:http ://www.javacodegeeks.com/2012/05/secure-password-storage-donts-dos-and.html

我会在输入时加密文本,然后传递结果字节数组。

于 2013-08-10T18:27:43.930 回答
0

您可以使用 getPassword() 方法。但是这个方法的返回类型是char数组。你可能想把它转换成String。

char a[]= jPasswordField1.getPassword();
 String pswd = new String (a);

或者简单地说,

String pswd= new String (jPasswordField1.getPassword());

将 id,pswd 传递给其他框架构造函数

new JFrame2(id,pswd);
于 2013-08-10T17:06:01.310 回答