1.2 Hashlib 模块 API 手册#

1. 概述#

uhashlib 库提供了基于 MD5、SHA1 和 SHA2 算法的二进制数据哈希功能。

2. API 介绍#

uhashlib 库提供了三个类:md5sha1sha256。这些类分别实现了两个函数:数据更新函数 update() 和消息摘要函数 digest()。其中,md5sha1 是 MicroPython 的软件实现;sha256 则由底层硬件加速器加速。

注意:本文档不详细介绍 md5sha1 的使用步骤,具体请参考 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'