SWRA846 July 2025 CC2642R-Q1
encrypt_task.c
#include "FreeRTOS.h"
#include "task.h"
#include "aes.h"
#include <stdio.h>
#include <string.h>
#define AES_BLOCK_SIZE 16
// AES-256密钥(必须为32字节)
static uint8_t key[32] = {xx};
// 初始化向量(IV),必须为16字节
static uint8_t iv[AES_BLOCK_SIZE] = {yy};
void EncryptTask(void *pvParameters) {
uint8_t plaintext_block[AES_BLOCK_SIZE] = {0};
memcpy(plaintext_block, plaintext, strlen(plaintext));
uint8_t ciphertext_block[AES_BLOCK_SIZE] = {0};
uint8_t decrypted_block[AES_BLOCK_SIZE] = {0};
// AES CBC 加密上下文
struct AES_ctx ctx;
AES_init_ctx_iv(&ctx, key, iv);
// 加密
AES_CBC_encrypt_buffer(&ctx, plaintext_block, AES_BLOCK_SIZE);
memcpy(ciphertext_block, plaintext_block, AES_BLOCK_SIZE);
// 解密(重新初始化上下文以确保IV被重置)
AES_init_ctx_iv(&ctx, key, iv);
AES_CBC_decrypt_buffer(&ctx, ciphertext_block, AES_BLOCK_SIZE);
memcpy(decrypted_block, ciphertext_block, AES_BLOCK_SIZE);
vTaskDelay(pdMS_TO_TICKS(1000)); // 任务延时
main.c
#include "FreeRTOS.h"
#include "task.h"
#include "encrypt_task.h"
int main(void) {
// 初始化硬件
// 创建加密任务
xTaskCreate(EncryptTask, // 任务函数
"Encrypt Task", // 任务名称
512, // 堆栈大小(字节)
NULL, // 任务参数
1, // 优先级(任务越重要越高)
NULL); // 任务句柄
// 启动RTOS调度器
vTaskStartScheduler();
}
The advantages of this method lie in: