Discuss / Python / 山东洛馍卷大葱

山东洛馍卷大葱

Topic source

练习一:

import hashlib

db = {
    'michael': 'e10adc3949ba59abbe56e057f20f883e',
    'bob': '878ef96e86145580c38c87f0410ad153',
    'alice': '99b1c2188db85afee403b1536010c2c9'
}

def calc_md5(password):
	return hashlib.md5(password.encode('utf-8')).hexdigest()

def login(user, password):
	return db[user] == calc_md5(password)
	
# 测试:
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')

练习二:

import hashlib, random
db = {}

def get_md5(s):
    return hashlib.md5(s.encode('utf-8')).hexdigest()

class User(object):
    def __init__(self, username, password):
        self.username = username
        self.salt = ''.join([chr(random.randint(48, 122)) for i in range(20)])
        self.password = get_md5(password + self.salt)

def register(username, password):
	user = User(username, password)
	db[username] = user

register('michael', '123456')
register('bob', 'abc999')
register('alice', 'alice2008')

def login(username, password):
	user = db[username]
	return user.password == get_md5(password + user.salt)

# 测试:
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')

  • 1

Reply