import hashlib import os def hash_password(password: str) -> str: """Hash password using PBKDF2-HMAC-SHA256 with 100,000 iterations and a random salt.""" salt = os.urandom(16) key = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000) return salt.hex() + ":" + key.hex() def verify_password(password: str, hashed: str) -> bool: """Verify password against a pbkdf2 hash string.""" try: salt_hex, key_hex = hashed.split(":") salt = bytes.fromhex(salt_hex) key = bytes.fromhex(key_hex) new_key = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000) return key == new_key except Exception: return False