← 返回首页
Python3基础教程(六十)
发表时间:2022-04-24 10:52:23
hmac

上节说到,为了防止黑客通过反推表根据哈希值反推原始口令,需要增加一个salt来使得相同的输入也能得到不同的哈希,这样,大大增加了黑客破解的难度。

Python自带的hmac模块实现了标准的Hmac算法。

1.Hmac算法

Hmac算法:Keyed-Hashing for Message Authentication。它通过一个标准算法,在计算哈希的过程中,把key混入计算过程中。和我们自定义的加salt算法不同,Hmac算法针对所有哈希算法都通用,无论是MD5还是SHA-1。采用Hmac替代我们自己的salt算法,可以使程序算法更标准化,也更安全。

我们首先需要准备待计算的原始消息message,用户自定义的key,哈希算法,这里采用MD5,使用hmac的代码如下:

# -*- coding: utf-8 -*-
# @Time : 2022/4/25 22:23
# @File : hashlibdemo.py
# @Software : PyCharm

import hmac

message = b'you fellow has seed,I will give you some color to see see!'

#或者
#message = 'you fellow has seed,I will give you some color to see see!'.encode("utf-8")
key = b'www.simoniu.com'
h = hmac.new(key, message, digestmod='MD5')
# 如果消息很长,可以多次调用h.update(msg)
print(h.hexdigest())

运行结果:

5b6fb26c8bbbbadeb92691d7a153399c

可见hmac和普通hash算法非常类似。hmac输出的长度和原始哈希算法的长度一致。需要注意传入的key和message都是bytes类型,str类型需要首先编码为bytes。