Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.09 KB | None | 0 0
  1. import bcrypt
  2. import pickle
  3.  
  4. def create_user(username, password, users, user_salts):
  5.     if not username in users:
  6.         user_salts[username] = create_salt(username, user_salts)
  7.         users[username] = bcrypt.hashpw(str.encode(password), user_salts[username])
  8.         return users, user_salts
  9.     else:
  10.         return False
  11.  
  12. def update_user(username, password, newpassword, users, user_salts):
  13.     if username in users and bcrypyt.hashpw(password, user_salts[username]) == users[username]:
  14.         user_salts[username] = bcrypt.gensalt()
  15.         users[username] = bcrypt.hashpw(newpassword, user_salts[username])
  16.         return users, user_salts
  17.  
  18. def check_pass(username, password, users, user_salts):
  19.     password = str.encode(password)
  20.     try:
  21.         return users[username] == bcrypt.hashpw(password, user_salts[username])
  22.     except: return False
  23.  
  24. def create_salt(username, user_salts):
  25.     return bcrypt.gensalt()
  26.    
  27. def save_salt(user_salts, user_salts_db):
  28.     pickle.dump(user_salts, user_salts_db)
  29.  
  30. def load_salts(user_salts_db):
  31.     return pickle.load(user_salts_db)
  32.  
  33. def save_users(users, userdb):
  34.     pickle.dump(users, userdb)
  35.  
  36. def load_users(userdb):
  37.     return pickle.load(userdb)
  38.  
  39. def login(users, user_salts):
  40.     uname = input("Enter your username: ")
  41.     pword = input("Enter your password: ")
  42.     if check_pass(uname, pword, users, user_salts):
  43.         print("Success!")
  44.     else:
  45.         print("Failure.")
  46.         main()
  47.  
  48. def newuser(users, user_salts):
  49.     uname = input("Enter your desired username: ")
  50.     pword = input("Enter your password: ")
  51.     pword2 = input("Confirm password: ")
  52.     if not pword == pword2:
  53.         print("Try again.")
  54.         newuser(users)
  55.     else:
  56.         b = create_user(uname, pword, users, user_salts)
  57.         if not b:
  58.             print("Username already exists.")
  59.         else:
  60.             print("Success")
  61.             users, user_salts = b
  62.     with open("userdb.pickle", "wb") as userdb:
  63.         save_users(users, userdb)
  64.     with open("user_salts_db.pickle", "wb") as user_salts_db:
  65.         save_users(user_salts, user_salts_db)
  66.  
  67. def main():
  68.     try:
  69.         with open("userdb.pickle", "rb") as userdb:
  70.             users = load_users(userdb)
  71.     except: users = {}
  72.     try:
  73.         with open("user_salts_db.pickle", "rb") as user_salts_db:
  74.             user_salts = load_salts(user_salts_db)
  75.     except: user_salts = {}
  76.        
  77.     purpose = input("Log in, register, or change password?")
  78.     if purpose.lower() == "log in":
  79.         login(users, user_salts)
  80.     elif purpose.lower() == "register":
  81.         newuser(users, user_salts)
  82.     else:
  83.         uname = input("Username: ")
  84.         pword = input("Old password: ")
  85.         newp = input("New password: ")
  86.         newp2 = input("Confirm new password: ")
  87.         if newp == newp2:
  88.             users, user_salts = update_user(uname, pword, newpassord, users, user_salts)
  89.             save_users(users)
  90.             save_salts(user_salts)
  91.         else:
  92.             print("Passwords do not match")
  93.             main()
  94.  
  95. if __name__ == "__main__":
  96.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement