我希望将 ServiceStack 用于即将进行的项目,但我想使用 bcrypt 来散列密码。目前内置存储库使用 SHA256 散列。我有什么办法可以利用现有的身份验证代码并使用 bcrypt 代替吗?
问问题
454 次
1 回答
1
在这里澄清一下,ServiceStack 的 Auth Provider中的密码散列仅用于存储 UserName / Password 的 Auth Provider,即 Credentials / Basic / Digest Auth 提供者。
不幸的是,散列提供者不容易交换,因为它在每个不同的 UserAuthRepo 提供者的几个地方使用,请SaltedHash()
参见OrmLiteAuthRepository和RedisAuthRepository:
如果您可以提出一个共享接口,该接口既可以与 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 回答