【问题标题】:Hash a password in Java using recommended methods with char[]?使用 char[] 的推荐方法在 Java 中散列密码?
【发布时间】:2017-05-12 06:16:48
【问题描述】:

所以,我对 Java 密码散列进行了一些挖掘,基本上发现像 MD5(反正不使用这个)、SHA1SHA-256 这样的常用算法并不那么安全,因为它们太安全了快速地。我已经看到对 BCrypt 等外部实现的大量支持。

我真的很喜欢使用 BCrypt 的想法,但它有点违背了目的。我们大多数人现在可能知道JPasswordFieldchar[] getPassword() 方法更安全,因为它可以防止getText() 返回的String 被扔到JVM 字符串池中,如果系统受到内存攻击。

但是 Java(可能还有其他平台)的 BCrypt 实现使用字符串,这违背了使用 char[] 的全部目的。

那么,除了自己重做原始 BCrypt 代码之外,还有人推荐解决此问题的方法吗?我不是安全专家,我不想乱用我不熟悉的加密算法。

或者,是否可以使用带有 BCrypt 的字符串,因为一开始这种攻击的可能性相对较小?

或者,是否有其他推荐的类似于 BCrypt 的库支持char 数组?我愿意接受建议。

我正在编写的程序必须与远程机器上的数据库通信,因此密码必须通过网络发送。

【问题讨论】:

标签: java security hash bcrypt


【解决方案1】:

你可以像这样使用Password4j

char[] password = ...;
SecureString secure = new SecureString(password);

Password4j.hash(secure).withBCrypt();
secure.clear();

您可以找到有关SecureStrings here 的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    相关资源
    最近更新 更多