jfr*_*how 6 security encryption passwords blowfish salt
编辑:好的,所以我有点在这里找到答案BCrypt说长,类似的密码是等价的 - 问题与我,宝石,或密码学领域?
但是,如果你不得不在我们试图教育用户选择越来越复杂的密码,甚至密码,密码必须短于n个字符的世界中限制用户的密码长度,有人可以推荐使用bCrypt进行散列的新问题似乎是一种方式,最终在thedailywtf.com星期五的截图:)
原始问题如下:
我正在为一个应用程序重构一个旧的登录页面,并决定使用JAVA实现jBCrypt(http://www.mindrot.org/projects/jBCrypt/)给bCrypt一个旋转,并遇到一个主要的显示阻止.
问题在于checkpw方法,当使用非常长的种子时,它总是似乎返回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");
}
Run Code Online (Sandbox Code Playgroud)
}
这将是应该打印"匹配".
我有问题是说你说的添加AAA到密码传递给checkpw使它
BCrypt.checkpw("jw~ct/f61y1m7q458GiLVQpiqDK | 8kG = d368Id:D @ $ ^ _ 80I {qrn1HM6423 {FtestAccountO1nu3jKNaaa",pw_hash)
它仍然是真的!不完全是我所期待的.我没有在doc中看到任何密码长度限制但是我无法用较小的密码种子重现它,看起来如果我修改除了字符串结尾之外的其他任何东西,它按预期返回false.
我错过了什么专业吗?我知道我不应该是唯一一个在这些论坛上使用jBcrypt的人,因为我看过BCrypt在做一些研究时在很多帖子中推荐的.
编辑:Windows 7 64位 - Java(TM)SE运行时环境(版本1.6.0_24-b07)
好吧,所以这个问题的措辞足以让我真正弄清楚我在寻找什么(欢迎橡皮鸭).密码学领域现在是安全的!
BCrypt使用P_orig实现XOR,它是18个字节的整数,直到它结束,这将加密"密钥"限制为72个字节.忽略72字节后的Eveyrything(警告本来不错).
似乎是接受的妥协不是将用户的密码限制为72个字符或更少,而只是让它默默地通过.这背后的想法是72字符bCrypted密码比快速哈希替代品更好.
资料来源:BCrypt说长的,类似的密码是等价的 - 我,宝石或密码学领域的问题?