2012-10-10 82 views
2

我期待爲即將推出的項目使用ServiceStack,但我想使用bcrypt進行散列密碼。目前內置存儲庫使用SHA256哈希。有沒有什麼方法可以利用現有的認證碼並使用bcrypt?使用Bcrypt和ServiceStack

回答

1

要澄清此處,ServiceStack's Auth Provider中的密碼散列僅用於存儲用戶名/密碼的身份驗證提供程序,即憑證/基本/摘要驗證提供程序。

不幸的是,散列提供商不容易,因爲在每一個不同的UserAuthRepo提供商的幾個地方使用它支持熱插拔,請參閱OrmLiteAuthRepositorySaltedHash()RedisAuthRepository

如果你能拿出一個共享界面適用於ServiceStack目前使用的SHA256 SaltedHash以及可與bcrypt一起工作的東西,我可以重新考慮它以使哈希提供程序可覆蓋。即一個bcrypt散列提供者可以使用這個接口嗎?

public interface IHashProvider { 
    void GetHashAndSalt(byte[] Data, out byte[] Hash, out byte[] Salt); 
    void GetHashAndSaltString(string Data, out string Hash, out string Salt); 
    bool VerifyHash(byte[] Data, byte[] Hash, byte[] Salt); 
    bool VerifyHashString(string Data, string Hash, string Salt); 
} 

否則是否有一個將適用於兩者?

+0

這回答了這個問題。我會看看我是否可以讓一個bcrypt提供者來適應這個接口。可能有點棘手,因爲bcrypt也有工作因素。 –

+1

需要類似的東西,雖然我會建議在.Net中使用BCrypt(請參閱[Link](http://stackoverflow.com/a/6228051/135936)。我有一個使用Pbkdf2和HMAC簽名的實現。不得不實現我自己的UserAuthRepository。至於工作因素,站點密鑰等,我有一個設置類,它被注入到我的加密服務中,如果你進一步接口,我會很樂意分享我的實現一旦我支持測試。 – JBland