| 12345678910111213141516171819202122232425262728 |
- """Argon2id 密码散列与校验。"""
- from __future__ import annotations
- from argon2 import PasswordHasher, Type
- from argon2.exceptions import Argon2Error
- _PASSWORD_HASHER = PasswordHasher(type=Type.ID)
- _DUMMY_PASSWORD_HASH = _PASSWORD_HASHER.hash(
- "fixed-invalid-credential-placeholder"
- )
- def hash_password(password: str) -> str:
- if not password:
- raise ValueError("密码不能为空")
- return _PASSWORD_HASHER.hash(password)
- def verify_password(password_hash: str | None, password: str) -> bool:
- try:
- return _PASSWORD_HASHER.verify(
- password_hash or _DUMMY_PASSWORD_HASH,
- password,
- )
- except Argon2Error:
- return False
|