2013-02-10 60 views
2

我在这里尝试一个非常简单的任务。我有一台运行着的服务器,其上运行着一个MySQL实例,这是我的Rails应用程序用来填充的。不幸的是,我用设计来做我所有的用户管理,现在有点卡住了。使用BCrypt.Net来模拟设计密码加密?

所以我有一个C#应用程序,我正在写。我想通过已经存在的MySQL数据库来验证用户和密码。

现在这里是我知道(或认为我知道):

设计使用Bycrypt做他们的密码然后将其存储在数据库中的单向加密。问题是,我不知道如何正确执行加密来生成适当的加密密码进行验证。

这是我对我的生成散列密码当前进程:

string pass = password.Text; 
string mySalt = BCrypt.Net.BCrypt.GenerateSalt(); 
string myHash = BCrypt.Net.BCrypt.HashPassword(pass, mySalt); 

我想这一定是真的错了。我只是不知道我在这里错过了什么或者我做错了什么。我会继续搜索,如果我拿出一个答案,我会回来。此外,如果我打破了任何编辑规则或者只是让我知道,所以我可以快速修复它们。

预先感谢您的时间:)

回答

2

好吧,所以我的问题其实很愚蠢,但对于与我相同的逻辑谬误的任何其他人我会解释。

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

由于随机盐,BCrypt包含一个名为Verify(密码,hashed_pa​​ss)的实用程序函数。该功能允许测试未加密的密码和散列传递进行比较。漂亮和非常有用

1

我觉得你的问题是你生成每次盐业你散列密码,以验证对数据库。您需要使用初始生成密码时使用的Salt值。

+0

你确实是对的!我相信这是密码设计加密的一项功能。我目前正在研究它,但我相信有一个验证相等的函数,在给定当前哈希的情况下测试它是否相等。测试后我会发布更多内容 – 2013-02-10 22:25:51