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
关于编译、下载的详细步骤,请参考上手指南的相关介绍。
例程的预期结果
例程启动后,串口输出如下:
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,
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,
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,
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)同步:
执行AES run之前需要对输入内存同步缓存,保证AES读到所需的数据.
AES完成后,可能需要对输出内存同步缓存,保证读到正确数据。
参考文档
更新记录
版本 |
日期 |
发布说明 |
---|---|---|
0.0.1 |
10/2024 |
初始版本 |