cryptolib --- 加密算法¶
cryptolib 模块提供对称加密原语。在 OpenMV Cam 上,只要启用了 ssl 模块,就会包含该模块。
类¶
- class cryptolib.aes(key: bytes | bytearray | memoryview, mode: int, IV: bytes | bytearray | memoryview | None = None)¶
创建一个新的 AES 加密对象,适用于加密或解密。初始化之后,该加密对象只能用于一个方向——在
encrypt()之后运行decrypt()(或反之)是不受支持的。参数:
key—— 加密/解密密钥。必须恰好为 16 字节(AES-128)或 32 字节(AES-256);不支持 AES-192。可接受任何遵循缓冲区协议的对象。mode—— 选择分组加密模式:值
名称
说明
1ECB
电子密码本(Electronic Code Book)。每个 16 字节的分组独立加密;相同的明文分组会产生相同的密文。通常不推荐用于新的设计。
2CBC
密码分组链接(Cipher Block Chaining)。每个分组在加密前与前一个密文分组进行异或运算。需要一个 16 字节的
IV。ECB 和 CBC 都要求输入长度为 16 字节 AES 分组大小的整数倍。
IV—— 用于 CBC 模式的 16 字节初始化向量。在 ECB 模式下被忽略。
- encrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes¶
加密
in_buf。缓冲区长度必须是 16 字节的整数倍;请在调用前自行对明文进行填充。如果省略
out_buf,结果将作为一个新分配的bytes对象返回。否则,密文将被写入可变缓冲区out_buf,其长度至少应与in_buf相同。in_buf和out_buf可以引用同一个缓冲区以进行原地加密。
- decrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes¶
与
encrypt()类似,但执行相反的操作。