password.py 795 B

1234567891011121314151617181920212223242526
  1. # -*- coding:utf-8 -*-
  2. import base64
  3. import binascii
  4. import hashlib
  5. import re
  6. password_pattern = r"^(?=.*[a-zA-Z])(?=.*\d).{8,}$"
  7. def valid_password(password):
  8. # Define a regex pattern for password rules
  9. pattern = password_pattern
  10. # Check if the password matches the pattern
  11. if re.match(pattern, password) is not None:
  12. return password
  13. raise ValueError('Not a valid password.')
  14. def hash_password(password_str, salt_byte):
  15. dk = hashlib.pbkdf2_hmac('sha256', password_str.encode('utf-8'), salt_byte, 10000)
  16. return binascii.hexlify(dk)
  17. def compare_password(password_str, password_hashed_base64, salt_base64):
  18. # compare password for login
  19. return hash_password(password_str, base64.b64decode(salt_base64)) == base64.b64decode(password_hashed_base64)