Interface PasswordMatcher


public interface PasswordMatcher
密码匹配器接口

默认使用 PBKDF2WithHmacSHA256 算法(10 万次迭代,可经 nif.auth.password.iterations 配置), 同时自动兼容旧版 MD5 格式密码。 迁移策略:新密码自动使用 PBKDF2,验证时自动识别格式,旧密码仍可正常登录; 旧 MD5 密码验证通过后可用 needsRehash(String) 判断并重哈希升级。

接入方可在登录成功后:

if (matcher.match(rawPassword, encodedPassword) && matcher.needsRehash(encodedPassword)) {
    // 使用 matcher.encode(rawPassword) 生成新哈希并更新存储
}
Author:
Kerbores(kerbores@riemann.tech)
  • Method Summary

    Modifier and Type
    Method
    Description
    default String
    密码加密
    default boolean
    match(String raw, String encoded)
    密码匹配
    default boolean
    判断该密文是否需要重新哈希(透明升级)
  • Method Details

    • encode

      default String encode(String raw)
      密码加密

      默认使用 PBKDF2WithHmacSHA256 算法,随机盐 + 10 万次迭代

      Parameters:
      raw - 明文密码
      Returns:
      加密后的密码(PBKDF2 格式)
    • match

      default boolean match(String raw, String encoded)
      密码匹配

      自动识别密码格式(PBKDF2 或 MD5),向后兼容旧版 MD5 密码

      Parameters:
      raw - 明文密码
      encoded - 加密后的密码
      Returns:
      是否匹配
    • needsRehash

      default boolean needsRehash(String encoded)
      判断该密文是否需要重新哈希(透明升级)

      返回 true 表示当前为旧版格式(如 MD5),接入方应在密码验证通过后 用 encode(String) 重新生成 PBKDF2 哈希并更新存储

      Parameters:
      encoded - 加密后的密码
      Returns:
      true 表示需要重哈希(非 PBKDF2 格式)