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 成员

应用逻辑流程图

../../../_images/image_H1U2b1U8zoMtItxt5hBclKCin3b.webp

示例代码

完整示例代码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/crypto/des_demo.c