File size: 868 Bytes
358dfff |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
from passlib.context import CryptContext
# Password hashing context
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def get_password_hash(password: str) -> str:
"""
Hash a plain text password
"""
# Truncate password to 72 bytes if needed (bcrypt limitation)
if len(password.encode('utf-8')) > 72:
password = password.encode('utf-8')[:72].decode('utf-8', errors='ignore')
return pwd_context.hash(password)
def verify_password(plain_password: str, hashed_password: str) -> bool:
"""
Verify a plain text password against its hash
"""
# Truncate password to 72 bytes if needed (bcrypt limitation)
if len(plain_password.encode('utf-8')) > 72:
plain_password = plain_password.encode('utf-8')[:72].decode('utf-8', errors='ignore')
return pwd_context.verify(plain_password, hashed_password) |