java - 通过登录传递密码

标签 java string swing authentication passwords

我正在使用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 ):作为字符数组。要么以某种方式对其进行散列并传递散列码。

<小时/>

编辑
您声明:

Yes I am using a JPasswordField. However I used getText() for simplicity as it returns a String. Does the character array guarentee additional security than a string when being passed from one frame to another?

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

<小时/>

编辑2 您声明:

Ok. Now I understand it. But how can a password be passed from one frame to another? Does passing a char[] guarantee security?

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

关于java - 通过登录传递密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18164276/

相关文章:

java - JFormattedTextField 中的严格 24 小时制

java - 如何实时更改两个JTextFiled?

java - Spring Boot自定义过滤器不起作用

java - 使用 jdbi3 启动 Sprinboot 时出现 AbstractMethod 错误

c++ - 创建包含多个变量的大字符串的最佳方法?

java - 如何在没有不必要的十进制 0 的情况下很好地将 float 格式化为字符串

java - Java 中的输出问题

Java swing,在我的绘图组件中创建一个按钮

Java:将比较器重写为 Lambda - nullsafe

Java正则表达式匹配 "string"