| 12345678910111213141516171819202122 |
- import bcrypt
- def verify_password(plain_password: str, hashed_password: str) -> bool:
- """验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错)"""
- if not plain_password or not hashed_password:
- return False
- hp = hashed_password if isinstance(hashed_password, str) else str(hashed_password)
- if not hp.startswith("$2"):
- return False
- try:
- return bcrypt.checkpw(
- plain_password.encode("utf-8"),
- hp.encode("utf-8"),
- )
- except (ValueError, TypeError):
- return False
- def get_password_hash(password: str) -> str:
- """生成密码哈希"""
- return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
|