-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathauth.py
50 lines (40 loc) · 1.15 KB
/
auth.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import json
def get_credentials():
username = input('Enter your username: ')
password = pwhash(input(f'Enter your password {username}: '))
return username, password
def read_passwdb():
with open('passwd.json', 'r') as pwdb_file:
pwdb = json.load(pwdb_file)
return pwdb
def write_passwdb(pwdb):
with open('passwd.json', 'w') as pwdb_file:
json.dump(pwdb, pwdb_file)
def pwhash(password):
pwh = 0
for i, char in enumerate(password):
pwh += (i + 1) * ord(char)
return pwh
def add_user(pwdb, username, password):
if username not in pwdb:
pwdb[username] = password
def authenticate(username, password, pwdb):
if username in pwdb:
if password == pwdb[username]:
return True
else:
return False
else:
add_user(pwdb, username, password)
return True
def main():
username, password = get_credentials()
pwdb = read_passwdb()
status = authenticate(username, password, pwdb)
if status:
print('Success!')
else:
print('Wrong username or password!')
write_passwdb(pwdb)
if __name__ == '__main__':
main()