2
我期待爲即將推出的項目使用ServiceStack,但我想使用bcrypt進行散列密碼。目前內置存儲庫使用SHA256哈希。有沒有什麼方法可以利用現有的認證碼並使用bcrypt?使用Bcrypt和ServiceStack
我期待爲即將推出的項目使用ServiceStack,但我想使用bcrypt進行散列密碼。目前內置存儲庫使用SHA256哈希。有沒有什麼方法可以利用現有的認證碼並使用bcrypt?使用Bcrypt和ServiceStack
要澄清此處,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);
}
否則是否有一個將適用於兩者?
這回答了這個問題。我會看看我是否可以讓一個bcrypt提供者來適應這個接口。可能有點棘手,因爲bcrypt也有工作因素。 –
需要類似的東西,雖然我會建議在.Net中使用BCrypt(請參閱[Link](http://stackoverflow.com/a/6228051/135936)。我有一個使用Pbkdf2和HMAC簽名的實現。不得不實現我自己的UserAuthRepository。至於工作因素,站點密鑰等,我有一個設置類,它被注入到我的加密服務中,如果你進一步接口,我會很樂意分享我的實現一旦我支持測試。 – JBland