| 123456789101112131415161718192021222324252627 | import base64import binasciiimport hashlibimport repassword_pattern = r"^(?=.*[a-zA-Z])(?=.*\d).{8,}$"def valid_password(password):    # Define a regex pattern for password rules    pattern = password_pattern    # Check if the password matches the pattern    if re.match(pattern, password) is not None:        return password    raise ValueError("Password must contain letters and numbers, and the length must be greater than 8.")def hash_password(password_str, salt_byte):    dk = hashlib.pbkdf2_hmac("sha256", password_str.encode("utf-8"), salt_byte, 10000)    return binascii.hexlify(dk)def compare_password(password_str, password_hashed_base64, salt_base64):    # compare password for login    return hash_password(password_str, base64.b64decode(salt_base64)) == base64.b64decode(password_hashed_base64)
 |