【发布时间】:2017-05-12 06:16:48
【问题描述】:
所以,我对 Java 密码散列进行了一些挖掘,基本上发现像 MD5(反正不使用这个)、SHA1 和 SHA-256 这样的常用算法并不那么安全,因为它们太安全了快速地。我已经看到对 BCrypt 等外部实现的大量支持。
我真的很喜欢使用 BCrypt 的想法,但它有点违背了目的。我们大多数人现在可能知道JPasswordField 的char[] getPassword() 方法更安全,因为它可以防止getText() 返回的String 被扔到JVM 字符串池中,如果系统受到内存攻击。
但是 Java(可能还有其他平台)的 BCrypt 实现使用字符串,这违背了使用 char[] 的全部目的。
那么,除了自己重做原始 BCrypt 代码之外,还有人推荐解决此问题的方法吗?我不是安全专家,我不想乱用我不熟悉的加密算法。
或者,是否可以使用带有 BCrypt 的字符串,因为一开始这种攻击的可能性相对较小?
或者,是否有其他推荐的类似于 BCrypt 的库支持char 数组?我愿意接受建议。
我正在编写的程序必须与远程机器上的数据库通信,因此密码必须通过网络发送。
【问题讨论】: