gpt4 book ai didi

security - jBCrypt 与 checkpw 的严重问题(不应该返回 true?)

转载 作者:行者123 更新时间:2023-12-04 14:51:18 25 4
gpt4 key购买 nike

编辑:好的,所以我在这里找到了答案 BCrypt says long, similar passwords are equivalent - problem with me, the gem, or the field of cryptography?

不过,新问题是,如果您必须限制用户的密码长度,在我们试图教育用户选择越来越复杂的密码,甚至是密码短语的世界中,有人怎么推荐使用 bCrypt 进行散列,说您的密码必须短于 n 个字符似乎是在 thedailywtf.com 周五的截图中结束的一种方式:)

原问题如下:

我正在为一个应用程序重构一个旧的登录页面,并决定使用 JAVA 实现 jBCrypt ( http://www.mindrot.org/projects/jBCrypt/ ) 尝试一下 bCrypt 并遇到了一个主要的节目阻止者。

问题在于 检查密码使用很长的种子时似乎总是返回 true 的方法。我打算用 {InternalSalt}{username}{password} 对用户的密码加盐,然后用 bCrypt 散列它。

所以我有以下代码(尽可能地将其剥离以隔离 checkpw)。

public class Test {
public static void main(String[] args) {
String plaintext = "jw~ct/f61y1m7q458GiLVQpiqDK|8kG=d368Id:D@$^_80I{qrn1HM6423{FtestAccountO1nu3jKN";

String pw_hash = BCrypt.hashpw(plaintext, BCrypt.gensalt());

if (BCrypt.checkpw("jw~ct/f61y1m7q458GiLVQpiqDK|8kG=d368Id:D@$^_80I{qrn1HM6423{FtestAccountO1nu3jKN", pw_hash))
System.out.println("It matches");
else
System.out.println("It does not match");

}

}

这将,因为它应该,打印“它匹配”。

我遇到的问题是说你添加说 aaa 到您传递给 checkpw 的密码

BCrypt.checkpw("jw~ct/f61y1m7q458GiLVQpiqDK|8kG=d368Id:D@$^_80I{qrn1HM6423{FtestAccountO1nu3jKNaaa", pw_hash)

它仍然返回true!不完全是我所期望的。我在文档中没有看到任何密码长度限制,但我无法用较小的密码种子重现它,而且看起来如果我修改字符串末尾以外的任何其他内容,它会按预期返回 false。

我错过了什么重要的事情吗?我知道我一定不是唯一一个在这些论坛上使用 jBcrypt 的人,因为我在做一些研究时看到很多帖子都推荐了 BCrypt。

编辑:Windows 7 64 位 - Java(TM) SE 运行时环境(构建 1.6.0_24-b07)

最佳答案

好的,所以这个问题的措辞让我足以真正弄清楚我在寻找什么(为 rubber ducking 欢呼)。密码学领域目前是安全的!

BCrypt 使用 P_orig 实现 XOR,它是 18 个 4 字节的整数,直到它结束,这将您的加密“ key ”限制为 72 个字节。 72 字节后的所有内容都被忽略(警告会很好)。

似乎可以接受的妥协是不将用户的密码限制在 72 个字符或更少,而只是让它静默传递。这背后的想法是 72 个字符的 bCrypted 密码无论如何都比快速散列替代方案更好。

来源:BCrypt says long, similar passwords are equivalent - problem with me, the gem, or the field of cryptography?

关于security - jBCrypt 与 checkpw 的严重问题(不应该返回 true?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com