【发布时间】:2020-06-24 22:00:55
【问题描述】:
我正在编写一个 Java 程序,它只是登录到一个网站并执行一些不相关的事情。我预计我以外的人会使用它。所以,我有一个对话框(在终端中),要求用户输入密码,然后使用该密码登录。之后,我不需要密码。
我使用 java.io.console 中的 readPassword() 方法,该方法将密码存储在 char[] 中。完成密码后,我遍历数组并将所有值设置为 0。
这就够了吗?我应该对密码进行哈希处理吗?老实说,我真的不明白散列密码的意义。我的 char 数组可能被破坏的唯一方法是攻击者可以访问我的程序内存。但是,如果攻击者可以访问我的程序内存,那么即使我散列,当用户输入/将其转换为String 以使用它登录时,他们是否无法看到密码?
感谢您的帮助!作为参考,我正在使用 HTMLUnit 库进行登录。不确定这是否相关。
【问题讨论】:
-
如果你输入密码,在本地使用然后清除它,似乎没有任何理由也为它做一个哈希。
-
只是出于好奇,“本地”是什么意思?
-
本地而不是在其他任何地方发送密码。
-
我的意思是我把它发送到网站登录?我猜你是指将它发送到另一台机器?
-
如果你必须自己发送密码才能登录,那么散列仍然没有用。
标签: java passwords password-protection