fork download
  1. #普通MD5加密
  2.  
  3. import hashlib
  4.  
  5. def cac_md5(password):
  6. md5_3 = hashlib.md5()
  7. md5_3.update(f'{password}'.encode('utf-8'))
  8. return md5_3.hexdigest()
  9.  
  10. db = {
  11. 'michael': 'e10adc3949ba59abbe56e057f20f883e',
  12. 'bob': '878ef96e86145580c38c87f0410ad153',
  13. 'alice': '99b1c2188db85afee403b1536010c2c9'
  14. }
  15.  
  16. def login(user,password):
  17. hashlib_pws = cac_md5(password)
  18. return hashlib_pws == db[user]
  19.  
  20. assert login('michael', '123456')
  21. assert login('bob', 'abc999')
  22. assert login('alice', 'alice2008')
  23. assert not login('michael', '1234567')
  24. assert not login('bob', '123456')
  25. assert not login('alice', 'Alice2008')
  26.  
  27. #带盐值MD5加密
  28. import hashlib,random
  29.  
  30. class User(object):
  31. def __init__(self,username,password):
  32. self.username = username
  33. self.password = password
  34. self.salt = ''.join([chr(random.randint(48, 122))for i in range(20)])
  35. self.password=get_md5(self,password)
  36.  
  37. def get_md5(user,pws):
  38. md5_3=hashlib.md5()
  39. md5_3.update(f'{pws+user.salt}'.encode('utf-8'))
  40. return md5_3.hexdigest()
  41.  
  42. db={
  43. 'michael': User('michael', '123456'),
  44. 'bob': User('bob', 'abc999'),
  45. 'alice': User('alice', 'alice2008')
  46. }
  47.  
  48. def login(username,password):
  49. user=db[username]
  50. return user.password==get_md5(user,password)
  51.  
  52. assert login('michael', '123456')
  53. assert login('bob', 'abc999')
  54. assert login('alice', 'alice2008')
  55. assert not login('michael', '1234567')
  56. assert not login('bob', '123456')
  57. assert not login('alice', 'Alice2008')
  58. print('ok')
  59. # your code goes here
Success #stdin #stdout 0.12s 17688KB
stdin
Standard input is empty
stdout
ok