getpass, , , hashlib , . , python2 python3. , UserDB.users , json .
import getpass
import hashlib
import random
import sys
class UserDB():
def __init__(self, users=dict(), unprompt='Username:', pwprompt='Password:'):
self.users=dict(users)
self.unprompt=unprompt
self.pwprompt=pwprompt
def adduser(self):
if sys.version_info.major==3:
name=input(self.unprompt)
elif sys.version_info.major==2:
name=raw_input(self.unprompt)
passwd=getpass.getpass(self.pwprompt).encode('utf-8')
salt=bytes(random.randint(30, 95) for i in range(10))
passwd=hashlib.pbkdf2_hmac('sha512', passwd, salt, 10*10)
self.users[name]=[salt, passwd]
def deluser(self, name):
del self.users[name]
def __str__(self):
return str(self.users)
def __repr__(self):
return 'UserDB(users=%s, unprompt=%s, pwprompt=%s)' % (self.users,
ascii(self.unprompt),
ascii(self.pwprompt))
def login(self):
if sys.version_info.major==3:
name=input(self.unprompt)
elif sys.version_info.major==2:
name=raw_input(self.unprompt)
if name not in self.users:
return False
passwd=getpass.getpass(self.pwprompt).encode('utf-8')
salt=self.users[name][0]
passwd=hashlib.pbkdf2_hmac('sha512', passwd, salt, 10*10)
return self.users[name][1]==passwd