1.1 Ucryptolib 模块 API 手册

1.1 Ucryptolib 模块 API 手册#

1. 概述#

Ucryptolib 库提供了以下加解密功能:AES-ECB、AES-CBC、AES-CTR、AES-GCM 以及 SM4。其中,AES-ECB、AES-CBC 和 AES-CTR 模式由 MicroPython 的软件库原生实现,而 AES-GCM 和 SM4 则通过底层硬件加速器进行加速。

注意:本文档不详细介绍 AES-ECB、AES-CBC 和 AES-CTR 模式的加解密步骤,相关信息请参考 MicroPython 的 cryptolib 官方文档

2. API 介绍#

Ucryptolib 库提供了两个主要类:aessm4,这两个类分别实现了加密 (encrypt) 和解密 (decrypt) 操作。

2.1 类 aes#

描述

aes 用于初始化一个 AES-GCM 加解密对象,支持执行加密和解密操作。在 AES-GCM 加解密算法中,初始化时必须指定密钥 (key)、模式 (mode)、初始化向量 (IV) 和附加认证数据 (AAD)。

注意:初始化后,加密或解密对象只能用于单一操作,即加密或解密,不支持同时用于两者。

语法

ucryptolib.aes((key, mode, IV, AAD))

参数

参数名称

描述

输入/输出

key

加解密密钥,支持长度为 256 比特的密钥

输入

mode

加解密模式,支持的模式为 AES-GCM,设置 mode=0 即可

输入

IV

初始化向量,长度为 12 字节

输入

AAD

附加认证数据,用于验证数据完整性,支持的长度为任意

输入

示例

import ucryptolib

# 初始化AES-GCM对象
cipher = ucryptolib.aes(key, mode=0, IV=iv, AAD=aad)

# 执行加密操作
ciphertext = cipher.encrypt(plaintext)

# 执行解密操作
decrypted_text = cipher.decrypt(ciphertext)

2.2 类 sm4#

描述

sm4 用于初始化一个 SM4 加解密对象,支持中国国家密码算法标准 SM4 的加密和解密操作。与 AES-GCM 相似,SM4 初始化时需要提供密钥 (key)、模式 (mode) 和初始化向量 (IV)。

语法

ucryptolib.sm4((key, mode, IV))

参数

参数名称

描述

输入/输出

key

SM4 加解密密钥,支持的密钥长度为 128 比特

输入

mode

加解密模式,支持 ECB(电子密码本)和 CBC(加密块链)模式

输入

IV

初始化向量,长度为 16 字节,CBC 模式下必须提供

输入

示例

import ucryptolib

# 初始化SM4对象
cipher = ucryptolib.sm4(key, mode=1, IV=iv)

# 执行加密操作
ciphertext = cipher.encrypt(plaintext)

# 执行解密操作
decrypted_text = cipher.decrypt(ciphertext)