网站首页 网站源码
namespace Dpz.Core.Service.RepositoryService;
/// <summary>
/// 密码哈希服务接口
/// 提供密码加盐哈希和验证功能
/// </summary>
public interface IPasswordHashService
{
/// <summary>
/// 使用BCrypt对密码进行哈希(新版本)
/// BCrypt内置盐值管理,返回包含盐值的完整哈希
/// </summary>
/// <param name="password">原始密码</param>
/// <param name="workFactor">工作因子(默认12,范围4-31)</param>
/// <returns>BCrypt哈希字符串</returns>
string HashPasswordBCrypt(string password, int workFactor = 12);
/// <summary>
/// 使用MD5对密码进行哈希(旧版本兼容)
/// </summary>
/// <param name="account">用户账号</param>
/// <param name="password">原始密码</param>
/// <returns>MD5哈希后的密码</returns>
string HashPasswordMD5(string account, string password);
/// <summary>
/// 验证BCrypt密码(新版本)
/// </summary>
/// <param name="password">输入的密码</param>
/// <param name="hashedPassword">存储的BCrypt哈希</param>
/// <returns>密码是否正确</returns>
bool VerifyPasswordBCrypt(string password, string hashedPassword);
/// <summary>
/// 验证MD5密码(旧版本兼容)
/// </summary>
/// <param name="account">用户账号</param>
/// <param name="password">输入的密码</param>
/// <param name="storedHash">存储的MD5哈希</param>
/// <returns>密码是否正确</returns>
bool VerifyPasswordMD5(string account, string password, string storedHash);
/// <summary>
/// 智能验证密码(自动识别BCrypt或MD5)
/// </summary>
/// <param name="account">用户账号</param>
/// <param name="password">输入的密码</param>
/// <param name="storedHash">存储的密码哈希</param>
/// <returns>密码是否正确</returns>
bool VerifyPassword(string account, string password, string storedHash);
/// <summary>
/// 生成新版本密码哈希(BCrypt)
/// </summary>
/// <param name="password">原始密码</param>
/// <returns>BCrypt哈希字符串</returns>
string CreatePasswordHash(string password);
/// <summary>
/// 检查密码哈希是否为BCrypt格式(新版本)
/// </summary>
/// <param name="hashedPassword">密码哈希</param>
/// <returns>是否为BCrypt格式</returns>
bool IsBCryptHash(string? hashedPassword);
/// <summary>
/// 检查密码是否使用了新版本算法(BCrypt)
/// </summary>
/// <param name="hashedPassword">密码哈希</param>
/// <returns>是否为新版本密码</returns>
bool IsNewVersionPassword(string? hashedPassword);
}
上述代码定义了一个名为 IPasswordHashService 的接口,主要用于处理密码的哈希和验证功能。该接口提供了多种方法,以支持不同的密码哈希算法,主要包括 BCrypt 和 MD5。以下是对每个方法的详细解释:
HashPasswordBCryptpassword: 要哈希的原始密码。workFactor: 工作因子,控制哈希计算的复杂度,默认值为 12,范围在 4 到 31 之间。HashPasswordMD5account: 用户账号。password: 要哈希的原始密码。VerifyPasswordBCryptpassword: 用户输入的密码。hashedPassword: 存储的 BCrypt 哈希。VerifyPasswordMD5account: 用户账号。password: 用户输入的密码。storedHash: 存储的 MD5 哈希。VerifyPasswordaccount: 用户账号。password: 用户输入的密码。storedHash: 存储的密码哈希。CreatePasswordHashpassword: 要哈希的原始密码。IsBCryptHashhashedPassword: 要检查的密码哈希。IsNewVersionPasswordhashedPassword: 要检查的密码哈希。这个接口提供了一整套密码哈希和验证的功能,支持现代的 BCrypt 算法和旧版的 MD5 算法,确保在处理用户密码时的安全性和兼容性。通过这些方法,开发人员可以轻松地实现用户密码的安全存储和验证。
