from argon2 import PasswordHasher from argon2.exceptions import ( VerifyMismatchError, VerificationError, InvalidHash, ) pwd_hasher = PasswordHasher( time_cost=3, memory_cost=65536, parallelism=2, ) def pwd_hash(pwd_plain: str) -> str: pwd_plain = str(pwd_plain) return pwd_hasher.hash(pwd_plain) def pwd_verify(pwd_plain: str, stored_hash: str) -> bool: pwd_plain = str(pwd_plain) try: valid = pwd_hasher.verify(stored_hash, pwd_plain) except (VerifyMismatchError, VerificationError, InvalidHash) as e: return False return valid