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...