Discuss / Python / 这两个题比较简单,一次完成

这两个题比较简单,一次完成

Topic source

-- coding utf-8 --

import hashlib md5=hashlib.md5() md5.update('how to use md5 in python hashlib?'.encode('utf-8')) #设置编码 md5.update('hell,world'.encode('utf-8')) print(md5.hexdigest())

#还有常用的sha算法 sha1=hashlib.sha1() sha1.update('hell,world'.encode('utf-8')) print (sha1.hexdigest())

#课中作业 db = { 'michael': 'e10adc3949ba59abbe56e057f20f883e', 'bob': '878ef96e86145580c38c87f0410ad153', 'alice': '99b1c2188db85afee403b1536010c2c9' } def login(user, password): md5=hashlib.md5() md5.update(password.encode('utf-8')) if db[user]==md5.hexdigest(): return True else: return False

测试:

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')

#传统的md5可以很容易给暴破了,因为我们要给一定的字符串,这样就更安全了,俗称加盐同时我们还可以添加用户名 import hashlib, random

#课后作业二

#根据用户输入的登录名和口令模拟用户注册,计算更安全的MD5: db = {} def register(username, password): db[username] = get_md5(password + username + 'the-Salt')

#然后,根据修改后的MD5算法实现用户登录的验证:
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) db = { 'michael': User('michael', '123456'), 'bob': User('bob', 'abc999'), 'alice': User('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')

printf_hello

#2 Created at ... [Delete] [Delete and Lock User]

没有理解第二题,能麻烦说一下吗


  • 1

Reply