网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
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);
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

上述代码定义了一个名为 IPasswordHashService 的接口,主要用于处理密码的哈希和验证功能。该接口提供了多种方法,以支持不同的密码哈希算法,主要包括 BCrypt 和 MD5。以下是对每个方法的详细解释:

1. HashPasswordBCrypt

  • 功能: 使用 BCrypt 算法对原始密码进行哈希处理。
  • 参数:
    • password: 要哈希的原始密码。
    • workFactor: 工作因子,控制哈希计算的复杂度,默认值为 12,范围在 4 到 31 之间。
  • 返回值: 返回包含盐值的完整 BCrypt 哈希字符串。

2. HashPasswordMD5

  • 功能: 使用 MD5 算法对原始密码进行哈希处理,主要用于旧版本的兼容性。
  • 参数:
    • account: 用户账号。
    • password: 要哈希的原始密码。
  • 返回值: 返回 MD5 哈希后的密码字符串。

3. VerifyPasswordBCrypt

  • 功能: 验证输入的密码是否与存储的 BCrypt 哈希匹配。
  • 参数:
    • password: 用户输入的密码。
    • hashedPassword: 存储的 BCrypt 哈希。
  • 返回值: 返回一个布尔值,指示密码是否正确。

4. VerifyPasswordMD5

  • 功能: 验证输入的密码是否与存储的 MD5 哈希匹配,主要用于旧版本的兼容性。
  • 参数:
    • account: 用户账号。
    • password: 用户输入的密码。
    • storedHash: 存储的 MD5 哈希。
  • 返回值: 返回一个布尔值,指示密码是否正确。

5. VerifyPassword

  • 功能: 智能验证密码,自动识别存储的哈希是 BCrypt 还是 MD5,并进行相应的验证。
  • 参数:
    • account: 用户账号。
    • password: 用户输入的密码。
    • storedHash: 存储的密码哈希。
  • 返回值: 返回一个布尔值,指示密码是否正确。

6. CreatePasswordHash

  • 功能: 生成新的 BCrypt 密码哈希。
  • 参数:
    • password: 要哈希的原始密码。
  • 返回值: 返回生成的 BCrypt 哈希字符串。

7. IsBCryptHash

  • 功能: 检查给定的密码哈希是否为 BCrypt 格式。
  • 参数:
    • hashedPassword: 要检查的密码哈希。
  • 返回值: 返回一个布尔值,指示是否为 BCrypt 格式。

8. IsNewVersionPassword

  • 功能: 检查给定的密码哈希是否使用了新版本的算法(BCrypt)。
  • 参数:
    • hashedPassword: 要检查的密码哈希。
  • 返回值: 返回一个布尔值,指示是否为新版本密码。

总结

这个接口提供了一整套密码哈希和验证的功能,支持现代的 BCrypt 算法和旧版的 MD5 算法,确保在处理用户密码时的安全性和兼容性。通过这些方法,开发人员可以轻松地实现用户密码的安全存储和验证。

loading