【发布时间】:2012-10-10 18:52:45
【问题描述】:
我希望将 ServiceStack 用于即将进行的项目,但我想使用 bcrypt 来散列密码。目前内置存储库使用 SHA256 散列。我有什么办法可以利用现有的身份验证代码并改用 bcrypt 吗?
【问题讨论】:
标签: authentication servicestack bcrypt
我希望将 ServiceStack 用于即将进行的项目,但我想使用 bcrypt 来散列密码。目前内置存储库使用 SHA256 散列。我有什么办法可以利用现有的身份验证代码并改用 bcrypt 吗?
【问题讨论】:
标签: authentication servicestack bcrypt
在此澄清ServiceStack's Auth Provider 中的密码哈希仅用于存储用户名/密码的身份验证提供程序,即凭据/基本/摘要身份验证提供程序。
不幸的是,散列提供程序不容易交换,因为它在每个不同的 UserAuthRepo 提供程序的一些地方使用,请参阅OrmLiteAuthRepository 中的SaltedHash() 和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);
}
要不然有什么可以同时适用的吗?
【讨论】: