2013-02-10 71 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