因此,我希望在我正在设计的网站上实现一个形式的日志,虽然我有密码盐化和哈希之前保存到我的数据库,我正在努力让用户登录,因为盐没有被保存。
我和一些人谈过这件事,他们建议我可以使用这种加密方法而不保存盐,但我不知道这是如何实现的。
我确实问了那个人,他给我发了一些代码,但不幸的是,它被发送到了我的工作邮箱地址,我忘了发送home...doh!
因此,我使用以下命令将用户放入数据库:
string pwdToHash = userDetails.PassWord;
string hashToStoreInDatabase = BCrypt.Net.BCrypt.HashPassword(pwdToHash, BCrypt.Net.BCrypt.GenerateSalt(12));现在我要登录了:
string mySalt = BCrypt.Net.BCrypt.GenerateSalt(12);
string myHash = BCrypt.Net.BCrypt.HashPassword(PassWord);
bool doesPasswordMatch = BCrypt.Net.BCrypt.Verify(myHash, mySalt);现在我意识到我在代码的一部分中使用日志生成了一个新的salt,但是如果我没有保存salt,我怎么知道它是什么呢?
有了这个建议,我是不是被带到了花园小路上,或者有没有可能不储存盐呢?
干杯
发布于 2015-08-06 02:39:23
储存盐是可以的。但是,如果你真的不需要,你可以在运行时使用用户独有的一条信息来计算一个。像这样使用的东西可以是他们的帐户创建日期,可以是纪元,也可以是刻度。
发布于 2015-08-06 02:39:33
谢谢你的投入,但我知道我做错了什么
我在创建密码时对密码进行了加盐和散列处理,但我在尝试登录时生成了一个新的散列,所以它总是返回true...doh!
我现在正在使用注册时创建的哈希,并根据他们输入的密码进行验证。现在都能用了。
谢谢
https://stackoverflow.com/questions/31839009
复制相似问题