1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- '''
- This file implements user management program. The user name and
- its password is saved in csv file.
- '''
- import random
- from hashlib import sha1
- import csv
- class PasswordHash(object):
- def __init__(self, password_):
- self.salt = "".join(chr(random.randint(33, 127)) for x in range(64))
- self.saltedpw = sha1((password_ + self.salt).encode()).hexdigest()
- def check_password(self, password_):
- """checks if the password is correct"""
- return self.saltedpw == sha1((password_ + self.salt).encode()).hexdigest()
- # Note: a secure application would never store passwords in plaintext in the source code
- def check_username(name):
- csvfile = open('passwd.csv')
- ret = 0
- reader = csv.reader(csvfile)
- for row in reader:
- if name == row[0]:
- ret = 1
- break
-
- csvfile.close()
- return ret
- def save_info(name,pw,salt):
- csvfile = open('passwd.csv', 'a')
- writer = csv.writer(csvfile)
- writer.writerow([name, pw, salt])
- csvfile.close()
- def register():
- flag = True
- # create the file if it doesn't exist
- csvfile = open('passwd.csv', "w")
- csvfile.close()
- while flag :
- username = input("username:")
- passwd = input("passwd:")
- if check_username(username):
- print("the usename already exist!")
- else :
- pwhash = PasswordHash(passwd)
- save_info(username,pwhash.saltedpw, pwhash.salt)
- print("register success!")
- flag = False
- register()
|