| 
                        1234567891011121314151617181920212223242526 | 
                        - import base64
 - import binascii
 - import hashlib
 - import re
 - 
 - password_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("Not a valid password.")
 - 
 - 
 - 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)
 
 
  |