【发布时间】:2015-08-14 07:05:53
【问题描述】:
大约几个小时前,我在 Stack Overflow 上询问了有关如何将 char[] 转换为 MD5 哈希的方法。提供了一个解决方案,但被认为是不安全的 - 正如几个人所述:Generating an MD5 Hash with a char[]
Neil Smithline 建议我使用 BCrypt,但我无法将其与 char[] 一起使用。
我使用 char[] 来存储登录表单中检索到的密码的原因是因为.getPassword() 仅支持 char[]。
char[] passwordChars = passwordInputField.getPassword();
String hashed = BCrypt.hashpw(passwordChars, BCrypt.gensalt(12));
目前,我正在尝试使用上述代码生成哈希,但由于变量 passwordCars 是 char[] 类型,BCrypt.haspw() 不支持它
现在我不使用常规字符串的唯一原因是它无法从内存中清除。
我现在的问题是 - 是否有可能以某种方式将 char[] 与 BCrypt 一起使用?
提前致谢!
【问题讨论】:
-
这是个坏主意,但是您需要将 char[] 转换回字符串(根据我从 api 中可以看出的内容),这似乎是一个糟糕的设计.. .
-
那你会推荐什么? MD5 似乎不安全,而 BCrypt 似乎不适用于 char[]。
-
找一个不使用String的实现
-
有什么好推荐的吗?
-
无论如何我都不是安全专家,但我所知道的关于 md5 的唯一问题是,它极有可能为两个不同的字符串生成相同的哈希值。你有更多关于它的价值的信息吗?
标签: java security hash char bcrypt