📜  Python中的 hashlib.sha3_256()(1)

📅  最后修改于: 2023-12-03 15:34:22.155000             🧑  作者: Mango

Python中的 hashlib.sha3_256()

简介

hashlib.sha3_256() 是Python 标准库中的一个哈希函数,它可以根据输入的数据生成一个具有固定长度的摘要(即哈希值),用于对数据进行安全的存储和传输。

SHA-3(Secure Hash Algorithm 3)是美国标准与技术局(NIST)于2015年发布的密码哈希函数家族,包括6种不同的固定输出长度哈希算法。它们是SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128和SHAKE256。

在Python的hashlib模块中,可以使用以下函数来创建SHA-3家族中6种不同变体的哈希函数:

  • hashlib.sha3_224()
  • hashlib.sha3_256()
  • hashlib.sha3_384()
  • hashlib.sha3_512()
  • hashlib.shake_128()
  • hashlib.shake_256()

在本篇文章中,我们将主要介绍 hashlib.sha3_256() 的用法和实例。

用法
简单示例

下面是一个简单的使用 hashlib.sha3_256() 函数的示例。

import hashlib

hash_obj = hashlib.sha3_256()

# 输入需要计算哈希值的数据
data = b'hello world'

# 用 update() 方法来更新 hash 对象的状态 (此处使用字节数组的形式作为"盐值")
hash_obj.update(data)

# 得到计算出的哈希值,进行 hex 转换得到十六进制字符串
hash_val = hash_obj.hexdigest()

print(hash_val) # 7d52b824f4bd8fba808cedf64867eacd0ddd819dc49fe372d9a24950dcb08c1e

上面的代码中,首先使用 hashlib.sha3_256() 创建一个哈希对象 hash_obj。然后通过 update() 方法更新该对象的状态为需要计算哈希值的数据。最后使用 hexdigest() 方法得到计算出的十六进制哈希值。

大数据文件示例

为了介绍 hashlib.sha3_256() 处理大数据文件的能力,我们来看一个示例代码。这里我们使用Python内置的测试数据文件 fakefile.bin 作为测试数据。

import hashlib

hash_obj = hashlib.sha3_256()

# 以二进制形式打开文件
with open('fakefile.bin', 'rb') as f:
    while chunk := f.read(4096):
        # 更改对象的状态,连续更新更好
        hash_obj.update(chunk)

print(hash_obj.hexdigest())

上面的代码中,打开文件 fakefile.bin,使用 while 循环读取文件的数据块(每次 4096 字节),然后更新 hash_obj对象的状态,直到文件被读取完毕。最后输出计算后的十六进制哈希值。

HMAC 使用示例

除了普通的哈希算法外,hashlib.sha3_256() 同样也可以用于计算 HMAC(Hash-based Message Authentication Code)。

import hashlib
import hmac
import binascii

# 需要计算 HMAC 的数据
data = b'The quick brown fox jumps over the lazy dog'

# 自己指定的密钥
key = b'secret'

# 建立以 SHA-3-256 算法为基础的哈希对象
hash_obj = hashlib.sha3_256(key)

# HMAC 计算
hmac_val = hmac.new(key=hash_obj.digest(), msg=data, digestmod=hashlib.sha3_256).digest()

print(binascii.hexlify(hmac_val)) # b'06de4fbb450b6da7469754a903ebf618487c1e8c8fcc9ba782e86f8b92a36a2b'

上面的代码中,首先以 key 为密钥创建了一个哈希对象 hash_obj,然后对 data 进行 HMAC 计算,最后输出计算出的 HMAC 值。

总结

hashlib.sha3_256() 是Python内置的一个哈希函数,用于生成具有固定长度的哈希值。通过 update() 方法可以不断更新哈希对象的状态,对大数据文件进行哈希计算也非常便捷。此外, hashlib.sha3_256() 还可以用于计算HMAC。在实际的数据存储和传输中,哈希函数都是不可缺少的一部分,能够有效保证数据的完整性和安全性。