HMAC是一种基于哈希函数和密钥验证消息完整性和真实性的技术。Python的hmac模块提供hmac.new()方法来创建HMAC对象,可以使用不同哈希算法如md5或sha256。该方法需要密钥和消息作为输入,返回的对象可通过update()方法处理消息并调用digest()或hexdigest()获取HMAC值。
摘要由CSDN通过智能技术生成
hmac.new()
方法用于创建一个
HMAC对象
,
该对象可用于计算一个消息的HMAC值。
HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)
是一种用于
验证消息完整性和真实性
的技术,
它基于
哈希函数
和
密钥
生成一个
固定长度的认证码
。
hmac.new()
方法的语法如下:
hmac.new(key, msg=None, digestmod=None)
参数key
是一个字节串,表示用于生成HMAC的密钥;
参数msg
是一个字节串,表示要计算HMAC的消息,如果不提供该参数,则默认为None
;
参数digestmod
是一个哈希算法对象,表示要用于计算HMAC的哈希算法,默认为hashlib.md5
。
一个密钥、一个签名消息、一个算法
hmac.new()
方法返回一个HMAC
对象,该对象具有以下方法:
-
update(msg)
:将字节串msg
添加到要计算的消息中。
-
digest()
:返回计算出的HMAC值的字节串。
-
hexdigest()
:返回计算出的HMAC值的十六进制字符串。
下面是一个示例代码,演示如何使用hmac.new()
方法计算消息的HMAC值:
import hmac
import hashlib
key = b'secret-key'
msg = b'message-to-be-authenticated'
h = hmac.new(key, msg, digestmod=hashlib.sha256)
digest = h.digest()
在上面的代码中,
首先定义了一个密钥key
和一个消息msg
,
然后使用hmac.new()
方法创建了一个HMAC对象h
,
并使用hashlib.sha256
作为哈希算法。
接着,使用update()
方法将要计算的消息添加到h
对象中,
最后使用digest()
方法计算出HMAC值,
并将其保存在变量digest
中。
Hmac算法:Keyed-Hashing for Message Authentication。它通过一个标准算法,在计算哈希的过程中,把key混入计算过程中。
和我们自定义的加salt算法不同,Hmac算法针对所有哈希算法都通用,无论是MD5还是SHA-1。采用Hmac替代我们自己的salt算法,可以使程序算法更标准化,也更安全。
Python自带的hmac模块实现了标准的Hmac算法。我们来看看如何使用hmac实现带key的哈希。
我们首先需要准备待计算的原始消息message,固定key,哈希算法,这
在加密内容基础上,增加盐(随机字符串),可以防止md4和sha算法可以通过撞库的方式破解.
既md5(message + salt),这就是hmac(Keyed-Hashing for Message Authentication)算法的原理.
import hmac
message = '王'.encode()
key = b'secret'
h = hmac.new(key, message,...
HMAC算法可以用于验证信息的完整性,这些信息可能在应用之间传递,或者存储在一个可能有安全威胁的地方。
其基本思路:生成实际数据的一个密码散列,并提供一个共享的秘密密钥。然后使用得到的散列检查所传输或存储的信息,以确定一个信任级别,而不传输秘密密钥。
hmac库提供了一个new()函数来创建一个新对象来计算消息签名。示例如下:
import hashlib
import hmac
str = 'Li YuanJing'
hmac_maker = hmac.new
print(m.hexdigest())
# 注意hmac模块只接受二进制数据的加密
# abc 123 456 --> 8c7498982f41b93eb0ce8216b48ba21d
# abc 123456 --> 8c749...