直接从 JPasswordField 获取字符串格式的密码
Posted
技术标签:
【中文标题】直接从 JPasswordField 获取字符串格式的密码【英文标题】:Getting password in string format directly from JPasswordField 【发布时间】:2021-12-24 13:19:52 【问题描述】:我正在使用 JPasswordField 从密码字段中获取输入。这是代码sn-p:
JPasswordField enterNewPassword = new JPasswordField ();
enterNewPassword.setBounds( 150,70,100,20);
String password = String.valueOf(enterNewPassword.getPassword());
上面的代码在添加函数 valueOf 后将密码作为字符串提供给我。 有没有其他方法可以直接将密码作为字符串检索?
【问题讨论】:
密码永远不应该变成String
,因为那样会变得不安全。
我同意这一点。但在这种情况下,她必须以任何方式获得确切的密码。可能她会在将密码存储到数据库之前应用哈希函数。所以她想去掉使用 String.valueOf() 的中间步骤。在所有情况下,她都可以访问程序中的原始密码。
【参考方案1】:
我建议你创建一个 JTextField,它应该指向一个 JPasswordField。
所以用这个:
JTextField enterNewPassword = new JPasswordField();
这将隐藏文本输入并自动将密码转换为纯字符串。无需转换
【讨论】:
如果您使用JPasswordField enterNewPassword = new JPasswordField();
会发生什么 - 它应该有不同的行为(尽管收到弃用警告)?
您将获得文本密码,无需转换。我使用它一段时间没有任何问题。 JTextField 是 JPasswordField 的超类。如果您在任何 IDE 中调试代码,您可以看到差异。我面临着同样的问题。在 JPasswordField 的情况下,输入已更改,我不知道为什么更改密码 plian 文本。然后我开始使用 JTextField 作为基类。我不知道确切的原因。
如果我们使用任何 String 函数,如 String.valueOf() 或 new String(),在所有情况下都会生成一个字符串对象。那么我们如何从登录屏幕获取密码。最后我们必须得到密码并将其转换为 MD5 或 SHA。最安全的方法是什么?
我发布的代码也是如此! JPassword.getText()
它与使用您的代码时调用的方法完全相同(您知道,继承,方法覆盖等)(顺便说一句,您的代码没有使用 JTextField
,它仍然是 JPasswordField
的一个实例)以上是关于直接从 JPasswordField 获取字符串格式的密码的主要内容,如果未能解决你的问题,请参考以下文章
关于JPasswordField的getText()方法过时问题解决