Advertisement
philip_ritchey

TAMU ENGR 102 login.py (with hashing)

Nov 6th, 2018
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1. import sys
  2. import getpass
  3. import hashlib
  4.  
  5.  
  6. def login(username: str = None, password: str = None) -> None:
  7.     if not username:
  8.         username = input('username: ')
  9.     if not password:
  10.         password = getpass.getpass('password: ')
  11.     if authenticate(username, password):
  12.         print('ACCESS GRANTED')
  13.     else:
  14.         print('ACCESS DENIED')
  15.  
  16.  
  17. def authenticate(username: str, password: str) -> bool:
  18.     try:
  19.         stored_password_hash = get_password(username)
  20.     except (FileNotFoundError, LookupError):
  21.         return False
  22.     h = hashlib.sha1()
  23.     h.update(bytes(password,'utf-8'))
  24.     password_hash = h.hexdigest()
  25.     return stored_password_hash == password_hash
  26.  
  27.    
  28. def get_password(username: str) -> str:
  29.     # if user exists, return user's stored password
  30.     # else raise Exception (file not found or user does not exist)
  31.     username = username.lower()
  32.     passwd = open('passwd')
  33.     for line in passwd:
  34.         # trim the newline
  35.         line = line[:-1]
  36.         uname, pword = line.split(':')
  37.         if username == uname:
  38.             return pword
  39.     raise LookupError('user does not exist')
  40.  
  41.  
  42. if __name__ == '__main__':
  43.     argc = len(sys.argv)
  44.     uname = sys.argv[1] if argc > 1 else None
  45.     pword = sys.argv[2] if argc > 2 else None
  46.     login(uname, pword)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement