- 我们可以验证一段数据是否有效,方法就是对比该数据的哈希值
- 如果salt是我们自己随机生成的,通常我们计算MD5时采用md5(message + salt)。 但实际上把salt看作一个key,加salt的哈希就是:计算一段message的哈希时,根据不同口令计算出不同的哈希。
- 要验证哈希值,必须同时提供正确的口令。
- 这就是Hmac算法:Key-Hashing for Message Authentication。
- 通过一个标准算法,在计算哈希的过程中,把key混入计算过程中。
- 采用Hmac算法,可以使程序更标准化,也更安全化。
- python自带的hmac模块实现了标准的Hmac算法。
- 继续上篇的模拟登录
import hmac,random def hmac_md5(key, s): return hmac.new(key.encode('utf-8'), s.encode('utf-8'), "MD5").hexdigest() class User(object): def __init__(self, username, password): self.username = username self.key = ''.join([chr(random.randint(48,122)) for i in range(20)]) #产生key self.password = hmac_md5(self.key, password) #通过hmac_md5产生self用户的key加密口令 db = { 'hewuxin': User('hewuxin','123456'), 'wuxin': User('wuxin','asd000') } def login(username, password): user = db[username] return user.password == hmac_md5(user.key, password) #判断输入的password进过hmac_md5转换后是否和字典中的口令相同 print(login('hewuxin','123456'))
python常用内建模块6 hmac
最新推荐文章于 2024-07-31 15:55:27 发布