将Bcrypt与ServiceStack一起使用

时间:2012-10-10 18:52:46

标签: authentication servicestack bcrypt

我希望将ServiceStack用于即将推出的项目,但我想将bcrypt用于散列密码。目前,内置存储库使用SHA256散列。我有什么方法可以利用现有的身份验证代码并使用bcrypt吗?

1 个答案:

答案 0 :(得分:1)

此处澄清ServiceStack's Auth Provider中的密码哈希仅用于存储用户名/密码的Auth Provider,即凭据/基本/摘要Auth提供程序。

不幸的是,哈希提供程序不容易交换,因为它在每个不同的UserAuthRepo提供程序中的几个地方使用,请参阅OrmLiteAuthRepositoryRedisAuthRepository中的SaltedHash()

如果你能想出一个既可以使用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);
}

否则有一个适用于两者的工作?