我正试着在这里做一个非常简单的任务。我有一个正在运行的服务器,上面运行着一个MySQL实例,我的rails应用程序使用它来填充。不幸的是,我使用devise来做所有的用户管理,现在有点卡住了。
因此,我有一个正在编写的C#应用程序。我只想通过已有的MySQL数据库验证用户和密码。
下面是我所知道的(或认为我知道的):
Devise使用Bycrypt对他们的密码进行单向加密,然后将其存储在数据库中。问题是我不确定如何正确地实现bycrypt来生成正确的加密密码以进行验证。
下面是我当前生成散列密码的过程:
string pass = password.Text;
string mySalt = BCrypt.Net.BCrypt.GenerateSalt();
string myHash = BCrypt.Net.BCrypt.HashPassword(pass, mySalt);我认为这一定是真的错了。我只是不知道我在这里遗漏了什么,或者我做错了什么。我会继续用谷歌搜索,如果我想出一个答案,我会发回来的。另外,如果我违反了任何编辑规则或其他东西,请让我知道,这样我就可以快速修复它们。
提前感谢您的宝贵时间:)
发布于 2013-02-11 06:42:05
好的,我的问题实际上很愚蠢,但对于其他和我有相同逻辑谬误的人,我会解释的。
默认情况下,Devise使用BCrypt进行加密,这通常是使用Blowfish完成的,当他们这样做时,他们总是使用BCrypts生成盐函数,该函数为密码的每个哈希生成一个随机盐。
由于随机盐的存在,BCrypt包含了一个称为Verify(password,hashed_pass)的实用函数。此函数允许测试未加密的密码和要比较的散列通过。很漂亮,很有用
发布于 2013-02-11 04:40:16
我认为您的问题是每次您散列密码以验证数据库时都会生成Salt。您需要使用最初生成密码时使用的相同Salt值。
https://stackoverflow.com/questions/14801532
复制相似问题