AES示例

源码路径:example/hal/aes

支持的平台

  • em-lb525

概述

本例程演示使用AES进行加密、解密,包含:

  • AES加解密(同步模式)

    • AES CBC模式加解密

    • AES CTR模式加解密

    • AES ECB模式加解密

  • AES加密(中断模式)

    • AES CBC模式加密

例程的使用

硬件需求

运行该例程前,需要准备一块本例程支持的开发板

编译和烧录

切换到例程project目录,运行scons命令执行编译:

scons --board=em-lb525 -j32

运行build_em-lb525_hcpu\uart_download.bat,按提示选择端口即可进行下载:

$ ./uart_download.bat

     Uart Download

please input the serial port num:5

关于编译、下载的详细步骤,请参考上手指南的相关介绍。

例程的预期结果

例程启动后,串口输出如下:

  1. AES CBC模式加密、解密:

10-19 23:26:22:007    AES CBC Mode:
10-19 23:26:22:009    Raw data:
10-19 23:26:22:010     0x43, 0x4a, 0x4b, 0x2f, 0x31, 0x38, 0x32, 0x31,
10-19 23:26:22:012     0x39, 0x31, 0x31, 0x32, 0x31, 0x35, 0x36, 0x2e,
10-19 23:26:22:014    Encry. ciphertext:
10-19 23:26:22:016     0xd5, 0xb2, 0xe1, 0x75, 0x68, 0x6d, 0xb2, 0x03,
10-19 23:26:22:017     0x63, 0x96, 0xe1, 0x70, 0xc3, 0xf9, 0xf4, 0xf3,
10-19 23:26:22:019    Decry. plaintext:
10-19 23:26:22:063     0x43, 0x4a, 0x4b, 0x2f, 0x31, 0x38, 0x32, 0x31,
10-19 23:26:22:068     0x39, 0x31, 0x31, 0x32, 0x31, 0x35, 0x36, 0x2e,
  1. AES CTR模式加密、解密:

10-19 23:26:22:077    AES CTR Mode:
10-19 23:26:22:082    Raw data:
10-19 23:26:22:086     0x43, 0x4a, 0x4b, 0x2f, 0x31, 0x38, 0x32, 0x31,
10-19 23:26:22:091     0x39, 0x31, 0x31, 0x32, 0x31, 0x35, 0x36, 0x2e,
10-19 23:26:22:096    Encry. ciphertext:
10-19 23:26:22:100     0x86, 0xe9, 0x35, 0x58, 0xb9, 0xdd, 0x7d, 0x0b,
10-19 23:26:22:106     0x74, 0x85, 0x6c, 0x07, 0x1a, 0xe1, 0xbd, 0x9c,
10-19 23:26:22:111    Decry. plaintext:
10-19 23:26:22:114     0x43, 0x4a, 0x4b, 0x2f, 0x31, 0x38, 0x32, 0x31,
10-19 23:26:22:118     0x39, 0x31, 0x31, 0x32, 0x31, 0x35, 0x36, 0x2e,
  1. AES ECB模式加密、解密:

10-19 23:26:22:128    AES ECB Mode:
10-19 23:26:22:132    Raw data:
10-19 23:26:22:137     0x43, 0x4a, 0x4b, 0x2f, 0x31, 0x38, 0x32, 0x31,
10-19 23:26:22:142     0x39, 0x31, 0x31, 0x32, 0x31, 0x35, 0x36, 0x2e,
10-19 23:26:22:147    Encry. ciphertext:
10-19 23:26:22:152     0x6d, 0xf0, 0x28, 0xcd, 0x3c, 0xf5, 0x29, 0x79,
10-19 23:26:22:156     0x85, 0x06, 0xb9, 0xba, 0x35, 0x34, 0xf9, 0x46,
10-19 23:26:22:161    Decry. plaintext:
10-19 23:26:22:165     0x43, 0x4a, 0x4b, 0x2f, 0x31, 0x38, 0x32, 0x31,
10-19 23:26:22:170     0x39, 0x31, 0x31, 0x32, 0x31, 0x35, 0x36, 0x2e,
  1. AES CBC加密(中断模式):

10-19 23:26:22:180    AES encryption interrupt mode:
10-19 23:26:22:184    Raw data:
10-19 23:26:22:188     0x43, 0x4a, 0x4b, 0x2f, 0x31, 0x38, 0x32, 0x31,
10-19 23:26:22:192     0x39, 0x31, 0x31, 0x32, 0x31, 0x35, 0x36, 0x2e,
10-19 23:26:22:197    Encry. ciphertext:
10-19 23:26:22:201     0xd5, 0xb2, 0xe1, 0x75, 0x68, 0x6d, 0xb2, 0x03,
10-19 23:26:22:206     0x63, 0x96, 0xe1, 0x70, 0xc3, 0xf9, 0xf4, 0xf3,

异常诊断

警告

AES是硬件直接读写内存,如果AES的输入、输出内存使用PSRAM,需要注意缓存(cache)同步:

  1. 执行AES run之前需要对输入内存同步缓存,保证AES读到所需的数据.

  2. AES完成后,可能需要对输出内存同步缓存,保证读到正确数据。

参考文档

更新记录

版本

日期

发布说明

0.0.1

10/2024

初始版本