首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BCrypt.Net模拟设计密码加密?

使用BCrypt.Net模拟设计密码加密?
EN

Stack Overflow用户
提问于 2013-02-11 03:11:48
回答 2查看 706关注 0票数 2

我正试着在这里做一个非常简单的任务。我有一个正在运行的服务器,上面运行着一个MySQL实例,我的rails应用程序使用它来填充。不幸的是,我使用devise来做所有的用户管理,现在有点卡住了。

因此,我有一个正在编写的C#应用程序。我只想通过已有的MySQL数据库验证用户和密码。

下面是我所知道的(或认为我知道的):

Devise使用Bycrypt对他们的密码进行单向加密,然后将其存储在数据库中。问题是我不确定如何正确地实现bycrypt来生成正确的加密密码以进行验证。

下面是我当前生成散列密码的过程:

代码语言:javascript
复制
string pass = password.Text;
string mySalt = BCrypt.Net.BCrypt.GenerateSalt();
string myHash = BCrypt.Net.BCrypt.HashPassword(pass, mySalt);

我认为这一定是真的错了。我只是不知道我在这里遗漏了什么,或者我做错了什么。我会继续用谷歌搜索,如果我想出一个答案,我会发回来的。另外,如果我违反了任何编辑规则或其他东西,请让我知道,这样我就可以快速修复它们。

提前感谢您的宝贵时间:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-11 06:42:05

好的,我的问题实际上很愚蠢,但对于其他和我有相同逻辑谬误的人,我会解释的。

默认情况下,Devise使用BCrypt进行加密,这通常是使用Blowfish完成的,当他们这样做时,他们总是使用BCrypts生成盐函数,该函数为密码的每个哈希生成一个随机盐。

由于随机盐的存在,BCrypt包含了一个称为Verify(password,hashed_pass)的实用函数。此函数允许测试未加密的密码和要比较的散列通过。很漂亮,很有用

票数 2
EN

Stack Overflow用户

发布于 2013-02-11 04:40:16

我认为您的问题是每次您散列密码以验证数据库时都会生成Salt。您需要使用最初生成密码时使用的相同Salt值。

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

https://stackoverflow.com/questions/14801532

复制
相关文章

相似问题

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