首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不存储盐的情况下验证BCrypt.Net密码?

在不存储盐的情况下验证BCrypt.Net密码?
EN

Stack Overflow用户
提问于 2015-08-06 01:24:18
回答 2查看 698关注 0票数 0

因此,我希望在我正在设计的网站上实现一个形式的日志,虽然我有密码盐化和哈希之前保存到我的数据库,我正在努力让用户登录,因为盐没有被保存。

我和一些人谈过这件事,他们建议我可以使用这种加密方法而不保存盐,但我不知道这是如何实现的。

我确实问了那个人,他给我发了一些代码,但不幸的是,它被发送到了我的工作邮箱地址,我忘了发送home...doh!

因此,我使用以下命令将用户放入数据库:

代码语言:javascript
复制
string pwdToHash = userDetails.PassWord;
string hashToStoreInDatabase = BCrypt.Net.BCrypt.HashPassword(pwdToHash, BCrypt.Net.BCrypt.GenerateSalt(12));

现在我要登录了:

代码语言:javascript
复制
string mySalt = BCrypt.Net.BCrypt.GenerateSalt(12);
        string myHash = BCrypt.Net.BCrypt.HashPassword(PassWord);

        bool doesPasswordMatch = BCrypt.Net.BCrypt.Verify(myHash, mySalt);

现在我意识到我在代码的一部分中使用日志生成了一个新的salt,但是如果我没有保存salt,我怎么知道它是什么呢?

有了这个建议,我是不是被带到了花园小路上,或者有没有可能不储存盐呢?

干杯

EN

回答 2

Stack Overflow用户

发布于 2015-08-06 02:39:23

储存盐是可以的。但是,如果你真的不需要,你可以在运行时使用用户独有的一条信息来计算一个。像这样使用的东西可以是他们的帐户创建日期,可以是纪元,也可以是刻度。

票数 0
EN

Stack Overflow用户

发布于 2015-08-06 02:39:33

谢谢你的投入,但我知道我做错了什么

我在创建密码时对密码进行了加盐和散列处理,但我在尝试登录时生成了一个新的散列,所以它总是返回true...doh!

我现在正在使用注册时创建的哈希,并根据他们输入的密码进行验证。现在都能用了。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31839009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档