2

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

4

1 回答 1

1

在这里澄清一下,ServiceStack 的 Auth Provider中的密码散列仅用于存储 UserName / Password 的 Auth Provider,即 Credentials / Basic / Digest Auth 提供者。

不幸的是,散列提供者不容易交换,因为它在每个不同的 UserAuthRepo 提供者的几个地方使用,请SaltedHash()参见OrmLiteAuthRepositoryRedisAuthRepository

如果您可以提出一个共享接口,该接口既可以与 ServiceStack 当前使用的 SHA256 SaltedHash 一起使用,也可以与 bcrypt 一起使用,我可以重新分解它以使 Hashing 提供程序可覆盖。ie 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);
}

否则有一个对两者都适用的吗?

于 2012-10-10T19:08:41.430 回答