直接从 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 获取字符串格式的密码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VBA 从单元格中获取一些字符

JAVA中JPasswordField实现密码的确认

关于JPasswordField的getText()方法过时问题解决

有没有办法从 Google 表格单元格中获取“标题文本”?

如何从具有多个数组的字典中获取特定键并存储到放置在表格视图单元格中的字符串中

从JSON对象获取字符串值失败如果Identifier有空格android