gruntfutuk

passwords

Jun 23rd, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1. import bcrypt
  2.  
  3. def gen_password(password, salt=12):
  4.     return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt(salt))
  5.  
  6. def check_password(check_password, stored_password):
  7.     try:
  8.         return bcrypt.checkpw(check_password.encode('utf-8'), stored_password)
  9.     except ValueError:
  10.         return False
  11.  
  12. def save_password(name, password):
  13.     if name not in passwords:
  14.         passwords[name] = gen_password(password)
  15.         return True
  16.     else:
  17.         return False
  18.  
  19. def get_name_and_password():
  20.         name = input('Name? (enter to finish): ')
  21.         if not name:
  22.             return None, None
  23.         while True:
  24.             password = input('Password? ')
  25.             if password:
  26.                 break
  27.             print('A password is require')
  28.         return name, password
  29.  
  30. def add_users():
  31.     print('\n\nAdd new users and passwords to password database\n')
  32.     while True:
  33.         name, password = get_name_and_password()
  34.         if not name:
  35.             return
  36.         stored = save_password(name, password)
  37.         if stored:
  38.             print(f'{name} password saved')
  39.         else:
  40.             print(f'{name} is not unique and cannot be saved')
  41.            
  42. def test():
  43.     print('\n\nEnter user names and passwords to test password database\n')
  44.     while True:
  45.         name, password = get_name_and_password()
  46.         if not name:
  47.             return
  48.         if name in passwords:
  49.             valid = check_password(password, passwords[name])
  50.         else:
  51.             valid = False
  52.         print(f'Name and Password are {"correct" if valid else "not correct"}')
  53.        
  54.  
  55. passwords = {}  # this would be stored in a file typically
  56. add_users()
  57. test()
Add Comment
Please, Sign In to add comment