Python hashlib和hmac模块使用方法解析
简介
哈希算法(HASH),又称散列算法,是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。当输入的消息内容一样时,计算出来的消息摘要也相同,不同输入的消息内容计算出来的消息摘要也不同。哈希算法广泛应用于数字签名、消息认证码、随机映射等领域。
Python的hashlib模块提供了多种哈希算法的支持,包括md5、sha系列等。而hmac模块则是在hashlib模块基础上实现了HMAC加密消息摘要算法。
本文将使用Python中的hashlib和hmac模块,详细讲解如何使用这两个模块进行哈希算法的计算。
hashlib模块
哈希算法的常见应用
哈希算法广泛应用于密码学领域,例如存储用户密码时,通常将用户明文密码经过哈希算法计算得到哈希值后再存储到数据库中;在文件传输过程中,可以使用哈希算法计算文件的哈希值,一般情况下发送方和接收方计算得到的哈希值一致则说明文件传输成功。
hashlib模块的常见操作
hashlib模块主要有四个函数用于计算哈希值,分别是md5、sha1、sha224和sha256。
- md5
md5()函数用于计算字符串的MD5哈希值。示例代码如下:
import hashlib
# 计算字符串s的MD5哈希值
s = 'hello, world!'
md5 = hashlib.md5()
md5.update(s.encode('utf-8'))
print(md5.hexdigest())
- sha1
sha1()函数用于计算字符串的SHA-1哈希值。示例代码如下:
import hashlib
# 计算字符串s的SHA-1哈希值
s = 'hello, world!'
sha1 = hashlib.sha1()
sha1.update(s.encode('utf-8'))
print(sha1.hexdigest())
- sha224
sha224()函数用于计算字符串的SHA-224哈希值。示例代码如下:
import hashlib
# 计算字符串s的SHA-224哈希值
s = 'hello, world!'
sha224 = hashlib.sha224()
sha224.update(s.encode('utf-8'))
print(sha224.hexdigest())
- sha256
sha256()函数用于计算字符串的SHA-256哈希值。示例代码如下:
import hashlib
# 计算字符串s的SHA-256哈希值
s = 'hello, world!'
sha256 = hashlib.sha256()
sha256.update(s.encode('utf-8'))
print(sha256.hexdigest())
示例代码
下面的示例代码使用hahlib模块计算文件的哈希值。
import hashlib
def calc_sha256(file_path):
"""计算文件的SHA-256哈希值"""
sha256 = hashlib.sha256()
with open(file_path, 'rb') as f:
data = f.read(1024) # 每次读取1024字节
while data:
sha256.update(data)
data = f.read(1024)
return sha256.hexdigest()
if __name__ == '__main__':
file_path = 'test.txt'
print(calc_sha256(file_path))
hmac模块
HMAC算法的常见应用
HMAC算法是一种加密消息摘要算法,它需要一个密钥和消息,使用哈希算法计算出消息摘要,并将该摘要和密钥进行加密生成最终的加密消息摘要。HMAC算法广泛应用于数字签名、消息认证码等领域。
hmac模块的常见操作
hmac模块主要有两个函数用于计算HMAC,分别是hmac和new。
- hmac
hmac(key, msg, digestmod)函数用于计算HMAC,其中key为密钥,msg为消息,digestmod为哈希算法。示例代码如下:
import hmac
import hashlib
# 计算'HMAC-SHA256'加密的消息摘要
key = 'secret'.encode('utf-8')
msg = 'hello, world!'.encode('utf-8')
h = hmac.new(key, msg, digestmod=hashlib.sha256)
print(h.hexdigest())
- new
如果只想进行简单的哈希算法计算HMAC,可以使用new(key, msg=None, digestmod=None)函数进行计算。示例代码如下:
import hmac
import hashlib
# 计算'HMAC-SHA256'加密的消息摘要
key = 'secret'.encode('utf-8')
msg = 'hello, world!'.encode('utf-8')
h = hmac.new(key, digestmod=hashlib.sha256)
h.update(msg)
print(h.hexdigest())
示例代码
下面的示例代码使用hmac模块计算文件的HMAC值。
import hmac
import hashlib
def calc_hmac(file_path, key):
"""计算文件的HMAC值"""
h = hmac.new(key, digestmod=hashlib.sha256)
with open(file_path, 'rb') as f:
data = f.read(1024) # 每次读取1024字节
while data:
h.update(data)
data = f.read(1024)
return h.hexdigest()
if __name__ == '__main__':
file_path = 'test.txt'
key = 'secret'.encode('utf-8')
print(calc_hmac(file_path, key))
以上就是Python hashlib和hmac模块使用方法解析的完整攻略,希望能够对大家了解Python中哈希算法的应用有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python hashlib和hmac模块使用方法解析 - Python技术站