为什么bcrypt库的CompareHashAndPassword方法很慢?

时间:2018-03-22 19:55:39

标签: go bcrypt

我想比较密码并使用bcrypt库,但CompareHashAndPassword方法非常慢。为什么这种方法很慢?

var b  []byte =  []byte("1234")
 var bx  []byte =  []byte("$2a$14$RWV9NhWmlQmSoV9toM/k9OIzaNcYssCiauPVAljiX2NGhqvyxcOMy")
 fmt.Println("Start Compare: ", time.Now().Format("2006-01-02 15:04:05.000000"))
 err := bcrypt.CompareHashAndPassword(bx, b)
 fmt.Println("Completed Compare: ", time.Now().Format("2006-01-02 15:04:05.000000"))
 fmt.Println("------------------------")

结果:

  

开始比较:2018-03-22 22:53:09.142380

     

已完成比较:2018-03-22 22:53:10.347585

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

慢度是bcrypt的一个设计特性,因为如果速度很快,就很容易暴力破解密码哈希。来自Wikipedia

  

除了使用盐来防止彩虹表攻击之外,bcrypt还是一种自适应功能:随着时间的推移,可以增加迭代次数以使其更慢,因此它仍然可以抵抗暴力搜索即使计算能力越来越强,也会受到攻击。