我想比较密码并使用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
你能帮助我吗?
答案 0 :(得分:1)
慢度是bcrypt的一个设计特性,因为如果速度很快,就很容易暴力破解密码哈希。来自Wikipedia:
除了使用盐来防止彩虹表攻击之外,bcrypt还是一种自适应功能:随着时间的推移,可以增加迭代次数以使其更慢,因此它仍然可以抵抗暴力搜索即使计算能力越来越强,也会受到攻击。