【发布时间】:2015-03-23 22:51:42
【问题描述】:
我正在使用类似的方式存储我的密码
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync('password', salt); //hash = $2a$10$MCNmLPkgiZ9jH9/0x4ZVJOvxYratODHJbcC6.X3vIDoxOfFwBYCpK
我想将我的数据库移动到另一台机器上,然后砰!我所有的密码都是错误的
如果我在新机器上执行相同的代码,我会得到不同的哈希值,这很重要吗?
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync('password', salt); //hash = $2a$10$LLi4TyJ1oP69HQMkPpsExO4hinwW3SmURR0mqmB1ranCJX3ed5oDC
【问题讨论】:
-
您知道哈希应该每次都不同,对吗?哈希是否不同并不重要,因为您应该使用
compare方法来检查它们。 -
需要Salt来缓解哈希表攻击。
bcrypt.genSaltSync使用随机函数生成盐,因此它是不同的,因为两台计算机很少共享随机生成器。要解决这个问题,你必须找出旧机器上的盐是什么,并在新机器上设置相同,然后一切都会正常。