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 哈希对象,并可选择性地向其中发送数据。
语法
python
uhashlib.sha256([data])
1
参数
参数名称 | 描述 | 输入/输出 |
---|---|---|
data (可选) | 二进制数据 | 输入 |
返回值
返回值 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败 |
示例
python
data = bytes([0]*64)
hash_obj = uhashlib.sha256(data)
hash_obj.update(data)
dgst = hash_obj.digest()
print(dgst)
1
2
3
4
5
2
3
4
5
2.1.1 数据更新函数 update()
描述
如果需要多次输入二进制数据,可以调用 update()
函数更新数据。
语法
python
obj.update(data)
1
参数
参数名称 | 描述 | 输入/输出 |
---|---|---|
data | 输入二进制数据 | 输入 |
返回值
返回值 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败 |
2.1.2 消息摘要函数 digest()
描述 返回所有输入数据的哈希值。
注意:在 MicroPython 中,使用此函数会完成最后的计算,而不仅仅是显示结果。因此只能调用一次,如果需要多次使用该值,请保存到变量中。
语法
python
dgst = hash.digest()
print(dgst)
/*********** 注意 ***********/
a = hash.digest()
b = hash.digest() # 错误
1
2
3
4
5
6
2
3
4
5
6
参数
无
返回值
返回值 | 描述 |
---|---|
0 | 成功 |
非 0 | 失败 |
2.1.3 十六进制消息摘要函数 hexdigest()
该方法未实现。可以使用 binascii.hexlify(hash.digest())
达到类似效果。
3. 示例程序
计算哈希值
python
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'
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13