今天我读了not-implemented.com:Bcrypt密码散列,因为它是慢?
SHA-256应该在高速散列函数所需的大多数情况下进行选择。它被认为是安全的,没有已知的理论漏洞,并且它有一个合理的32字节的摘要大小。对于像散列用户密码,虽然设计是缓慢的功能是首选:一个伟大的是bcrypt。
有人能解释一下最后一句:
类的东西散列用户密码,虽然设计是缓慢的功能是首选:一个伟大的是bcrypt。
我不说这是不正确的,我的问题很简单:
为什么最好的散列用户密码使用一个缓慢的功能?
今天我读了not-implemented.com:Bcrypt密码散列,因为它是慢?
SHA-256应该在高速散列函数所需的大多数情况下进行选择。它被认为是安全的,没有已知的理论漏洞,并且它有一个合理的32字节的摘要大小。对于像散列用户密码,虽然设计是缓慢的功能是首选:一个伟大的是bcrypt。
有人能解释一下最后一句:
类的东西散列用户密码,虽然设计是缓慢的功能是首选:一个伟大的是bcrypt。
我不说这是不正确的,我的问题很简单:
为什么最好的散列用户密码使用一个缓慢的功能?
因为如果需要更多时间对值进行散列,则密码的使用时间也会更长。
请记住,慢意味着它需要更多的计算能力。当一个潜在的黑客试图暴力破解密码时也是如此。
在你身边,密码哈希需而很少计算。但是,谁试图从蛮力被盗哈希强制密码攻击者,依靠计算许多哈希越好。
因此,如果您登录现在只需100毫秒,而不是0.1(可能更低),这不是真正适合你的一个问题。但是,如果攻击者需要2000天才能破解密码而不是2天,那么这对于攻击者来说会产生巨大的影响。
bcrypt被设计成缓慢,不要让任何捷径。
它需要更多的努力,以蛮力攻击密码。算法越慢,每秒可以做出的猜测就越少。额外的时间将不被系统的用户所察觉,但会使其难以破解的密码。