DES/3DES加解密¶
Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.
功能概述¶
提供DES(Data Encryption Standard)与3DES(Triple DES)数据加解密功能。DES/3DES属于安全强度较低的加密算法,为兼容旧系统及部分特殊行业的网关,系统保留了对这两种算法的支持;在无兼容性要求的场景下,建议优先使用安全性更高的AES算法。
DES/3DES加解密API¶
头文件¶
mbedtls/des.h
函数概览¶
函数 |
说明 |
|---|---|
mbedtls_des3_init() |
初始化3DES上下文 |
mbedtls_des3_free() |
清除密钥数据并释放3DES上下文 |
mbedtls_des3_set3key_enc() |
设置3DES加密密钥(168位) |
mbedtls_des3_set3key_dec() |
设置3DES解密密钥(168位) |
mbedtls_des3_crypt_ecb() |
执行3DES ECB模式的数据块加解密 |
函数详解¶
mbedtls_des3_init¶
功能描述
初始化3DES上下文。调用其他任何3DES函数前,必须先调用本函数完成初始化。函数原型
void mbedtls_des3_init(mbedtls_des3_context *ctx);
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
ctx |
输出 |
*mbedtls_des3_context ** |
待初始化的3DES上下文指针;详见 mbedtls_des3_context |
返回值说明
无
mbedtls_des3_free¶
功能描述
清除上下文中的密钥数据并释放3DES上下文。函数原型
void mbedtls_des3_free(mbedtls_des3_context *ctx);
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
ctx |
输入/输出 |
*mbedtls_des3_context ** |
已初始化的3DES上下文指针;详见 mbedtls_des3_context |
返回值说明
无
mbedtls_des3_set3key_enc¶
功能描述
设置3DES加密密钥(168位,24字节),并生成加密所用的内部轮密钥。函数原型
int mbedtls_des3_set3key_enc(mbedtls_des3_context *ctx, const unsigned char key[24]);
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
ctx |
输入/输出 |
*mbedtls_des3_context ** |
已初始化的3DES上下文指针;详见 mbedtls_des3_context |
key |
输入 |
const unsigned char[24] |
24字节的加密密钥 |
返回值说明
0:函数执行成功
其他值:函数执行失败
mbedtls_des3_set3key_dec¶
功能描述
设置3DES解密密钥(168位,24字节),并生成解密所用的内部轮密钥。函数原型
int mbedtls_des3_set3key_dec(mbedtls_des3_context *ctx, const unsigned char key[24]);
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
ctx |
输入/输出 |
*mbedtls_des3_context ** |
已初始化的3DES上下文指针;详见 mbedtls_des3_context |
key |
输入 |
const unsigned char[24] |
24字节的解密密钥 |
返回值说明
0:函数执行成功
其他值:函数执行失败
mbedtls_des3_crypt_ecb¶
功能描述
执行3DES ECB模式的数据块加解密,单次固定处理8字节数据块。执行加密还是解密,由此前设置的密钥类型决定。函数原型
int mbedtls_des3_crypt_ecb(mbedtls_des3_context *ctx, const unsigned char input[8], unsigned char output[8]);
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
ctx |
输入/输出 |
*mbedtls_des3_context ** |
已初始化并成功设置密钥的3DES上下文指针;详见 mbedtls_des3_context |
input |
输入 |
const unsigned char[8] |
8字节输入数据块(明文或密文) |
output |
输出 |
unsigned char[8] |
存放8字节输出结果的缓冲区 |
返回值说明
0:函数执行成功
其他值:函数执行失败
结构体定义¶
mbedtls_des3_context¶
3DES上下文结构体定义如下:
typedef struct mbedtls_des3_context {
uint32_t sk[96];
} mbedtls_des3_context;
参数 |
类型 |
说明 |
|---|---|---|
sk |
uint32_t[96] |
保存3DES密钥扩展后生成的轮密钥;调用 mbedtls_des3_set2key_enc()、mbedtls_des3_set3key_enc()、mbedtls_des3_set2key_dec() 或 mbedtls_des3_set3key_dec() 后完成配置 |
备注
业务代码只需定义该上下文并传入 mbedtls_des3_* 接口,不应直接访问 sk 成员
应用逻辑流程图¶
示例代码¶
完整示例代码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/crypto/des_demo.c