1.2 Hashlib 模块 API 手册#
1. 概述#
uhashlib
库提供了基于 MD5、SHA1 和 SHA2 算法的二进制数据哈希功能。
2. API 介绍#
uhashlib
库提供了三个类:md5
、sha1
和 sha256
。这些类分别实现了两个函数:数据更新函数 update()
和消息摘要函数 digest()
。其中,md5
和 sha1
是 MicroPython 的软件实现;sha256
则由底层硬件加速器加速。
注意:本文档不详细介绍 md5
和 sha1
的使用步骤,具体请参考 MicroPython hash 官方文档
2.1 类 sha256
#
描述
sha256
类用于创建一个 SHA256 哈希对象,并可选择性地向其中发送数据。
语法
uhashlib.sha256([data])
参数
参数名称 |
描述 |
输入/输出 |
---|---|---|
data (可选) |
二进制数据 |
输入 |
返回值
返回值 |
描述 |
---|---|
0 |
成功 |
非 0 |
失败 |
示例
data = bytes([0]*64)
hash_obj = uhashlib.sha256(data)
hash_obj.update(data)
dgst = hash_obj.digest()
print(dgst)
2.1.1 数据更新函数 update()
#
描述
如果需要多次输入二进制数据,可以调用 update()
函数更新数据。
语法
obj.update(data)
参数
参数名称 |
描述 |
输入/输出 |
---|---|---|
data |
输入二进制数据 |
输入 |
返回值
返回值 |
描述 |
---|---|
0 |
成功 |
非 0 |
失败 |
2.1.2 消息摘要函数 digest()
#
描述 返回所有输入数据的哈希值。
注意:在 MicroPython 中,使用此函数会完成最后的计算,而不仅仅是显示结果。因此只能调用一次,如果需要多次使用该值,请保存到变量中。
语法
dgst = hash.digest()
print(dgst)
/*********** 注意 ***********/
a = hash.digest()
b = hash.digest() # 错误
参数
无
返回值
返回值 |
描述 |
---|---|
0 |
成功 |
非 0 |
失败 |
2.1.3 十六进制消息摘要函数 hexdigest()
#
该方法未实现。可以使用 binascii.hexlify(hash.digest())
达到类似效果。
3. 示例程序#
计算哈希值#
import uhashlib
import binascii
# 初始化 sha256 对象
obj = uhashlib.sha256()
# 输入数据1
obj.update(b'hello')
# 输入数据2
obj.update(b'world')
# 计算摘要
dgst = obj.digest()
print(binascii.hexlify(dgst))
# b'936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af'