137 lines
4.6 KiB
Markdown
Executable File
137 lines
4.6 KiB
Markdown
Executable File
|
||
|
||
# 硬件加解密模块(CE)示例工程
|
||
|
||
> 硬件加解密模块示例工程展示了XRadio SDK中CE模块中常用的加解密接口使用方法。
|
||
>
|
||
> 本工程中提供了以下几种加解密示例:
|
||
>
|
||
> 1. AES、CRC、MD5、伪随机数获取。
|
||
|
||
------
|
||
|
||
## 适用平台
|
||
|
||
> 本工程适用以下芯片类型:
|
||
>
|
||
> 1. XR806系列芯片
|
||
|
||
> 本工程适用以下评估板类型:
|
||
> 1. 底板:XR806_EVB
|
||
> 2. 模组:XR806_MD01
|
||
|
||
> 本工程在基于"XR806_MD01"的“XR806_EVB”板上测试通过。
|
||
> 若需要在其他适用芯片和评估板上运行本工程,请根据快速指南《XRadio_Quick_Start_Guide-CN》的提示进行相关配置修改。
|
||
|
||
> XRadio Wireless MCU芯片和评估板的更多信息可在以下地址获取:
|
||
> https://docs.xradiotech.com
|
||
|
||
## 工程配置
|
||
|
||
> localconfig.mk:
|
||
>
|
||
> - N/A
|
||
>
|
||
> Makefile:
|
||
>
|
||
> - N/A
|
||
>
|
||
> board_config.h:
|
||
>
|
||
> - N/A
|
||
>
|
||
> board_config.c:
|
||
>
|
||
> - N/A
|
||
>
|
||
> prj_config.h:
|
||
>
|
||
> - PRJCONF_CE_EN: 可选项,PRJCONF_CE_EN为1时,系统初始化时会自动初始化CE模块,应用层要用CE模块时,可直接用,不必初始化;为0时,系统初始化时不会自动初始化CE模块,应用层要用CE模块时,则需要先初始化CE模块。
|
||
|
||
## 模块依赖
|
||
|
||
> 必选项
|
||
>
|
||
> 无
|
||
|
||
> 可选项
|
||
>
|
||
> 无
|
||
|
||
## 工程说明
|
||
|
||
> 本工程为CE模块的使用用例,使用CE模块前,需要对常用的加解密算法或哈希算法有一定了解,比如AES,DES,3DES、CRC、SHA、MD5等。
|
||
>
|
||
> CE模块支持常用的AES、DES、3DES加解密,支持的模式有ECB、CBC。支持的哈希算法有:CRC、MD5、SHA1、SHA256。支持的随机数发生器有:伪随机发生器、真随机发生器。
|
||
>
|
||
> 本工程只演示了AES加解密、CRC、MD5、伪随机发生器的用法,其他算法的接口用法可参考头文件,也可参考`project/common/cmd/cmd_ce.c`中的代码。
|
||
>
|
||
|
||
### 操作说明
|
||
|
||
> 1. 编译工程,烧录镜像,重启即可
|
||
> 2. 打开串口调试工具,并连接串口
|
||
> 3. 系统启动后,会自动打印加密结果
|
||
|
||
### 代码结构
|
||
|
||
```
|
||
#本工程
|
||
.
|
||
├── gcc
|
||
│ ├── defconfig # 本工程的配置规则,用于覆盖默认配置
|
||
│ └── Makefile # 本工程的编译规则,如ld文件、image.cfg等文件指定,可覆盖默认配置
|
||
├── main.c # 本工程的入口,工程示例
|
||
├── prj_config.h # 本工程的配置选项,主要用于功能的选择。
|
||
└── readme.md # 本工程的说明文档
|
||
|
||
#本程用到XRadio SDK的其他配置文件
|
||
.
|
||
└── project
|
||
└── common
|
||
└── board
|
||
└── xr806_dig_ver #在project/Kconfig默认指定使用xr806_dig_ver的板级配置
|
||
├── board_config.h #本工程的板级配置
|
||
└── board_config.c #本工程的板级pin mux的配置。
|
||
```
|
||
|
||
## 性能资源
|
||
|
||
> 各加解密算法加解密数据长度及所需时间数据如下:
|
||
>
|
||
> 在AES、DES和3DES中,在ce启动后,每增加一个block,加解密增加的时间是固定的。
|
||
|
||
| 加密模式及秘钥长度 | 16 bytes | 32 bytes | 48 bytes | 64 bytes | 80 bytes |
|
||
| :----------------: | :------: | :------: | :------: | :------: | :------: |
|
||
| AES_ECB_128 | 4.1us | 5.1us | 6.2us | 7.4us | 8.5us |
|
||
| AES_ECB_192 | 4.2us | 5.6us | 6.8us | 8.0us | 9.2us |
|
||
| AES_ECB_256 | 4.8us | 6.1us | 7.4us | 8.7us | 10.1us |
|
||
| AES_CBC_128 | 4.9us | 6.0us | 7.1us | 8.2us | 9.3us |
|
||
| AES_CBC_192 | 5.5us | 6.5us | 7.7us | 8.9us | 10.1us |
|
||
| AES_CBC_256 | 5.6us | 6.9us | 8.2us | 9.6us | 10.9us |
|
||
|
||
| 加密模式 | 8 bytes | 16 bytes | 24 bytes | 32 bytes | 40 bytes |
|
||
| :------: | :-----: | :------: | :------: | :------: | :------: |
|
||
| DES_ECB | 3.2us | 3.6us | 4.2us | 4.7us | 5.2us |
|
||
| DES_CBC | 3.5us | 4.0us | 4.5us | 5.0us | 5.8us |
|
||
| 3DES_ECB | 4.1us | 4.8us | 5.2us | 6.5us | 7.3us |
|
||
| 3DES_CBC | 4.5us | 5.3us | 6.1us | 7.0us | 7.8us |
|
||
|
||
| 加密模式 | 50 bytes | 100 bytes | 150 bytes | 200 bytes | 250 bytes |
|
||
| :------: | :------: | :-------: | :-------: | :-------: | :-------: |
|
||
| SHA1 | 5.6us | 6.4us | 7.3us | 8.1us | 9.1us |
|
||
| SHA256 | 5.5us | 6.3us | 7.2us | 8.0us | 8.9us |
|
||
| MD5 | 5.4us | 6.2us | 7.1us | 7.9us | 8.7us |
|
||
|
||
## 注意事项
|
||
|
||
> AES、DES、3DES的填充方式为zeropadding,如果需要其他填充方式,需要自行修改ce驱动代码。
|
||
|
||
## 常见问题
|
||
|
||
> 无
|
||
>
|
||
|
||
## 参考文档
|
||
|
||
> 无 |