HASH示例
源码路径:example/hal/hash
支持的平台
eh-lb525
em-lb525
em-lb587
概述
本例程演示使用HASH引擎进行HASH运算,包含:
单次HASH运算(数据不拆分、同步轮询模式)
SHA1
SHA224
SHA256
SM3
单次HASH运算(数据不拆分、异步中断模式)
SHA1
多次运算(数据拆分,针对数据比较大的场景)
SHA1
例程的使用
硬件需求
运行该例程前,需要准备一块本例程支持的开发板(支持的平台)。
编译和烧录
切换到例程project目录,运行scons命令执行编译:
> scons --board=eh-lb525 -j32
切换到例程project/build_xx
目录,运行uart_download.bat
,按提示选择端口即可进行下载:
$ ./uart_download.bat
Uart Download
please input the serial port num:5
关于编译、下载的详细步骤,请参考快速上手的相关介绍。
例程的预期结果
例程启动后,串口输出如下:
打印原始数据:
10-19 22:13:46:066 Input raw data:
10-19 22:13:46:067 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
10-19 22:13:46:069 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x64,
10-19 22:13:46:071 0x61, 0x74, 0x61, 0x20, 0x75, 0x73, 0x65, 0x64,
10-19 22:13:46:072 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x65, 0x73,
10-19 22:13:46:074 0x74, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x61, 0x73,
10-19 22:13:46:076 0x68, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69,
10-19 22:13:46:078 0x74, 0x68, 0x6d, 0x20, 0x77, 0x69, 0x74, 0x68,
10-19 22:13:46:124 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73,
10-19 22:13:46:129 0x68, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61,
10-19 22:13:46:133 0x72, 0x65, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
10-19 22:13:46:139 0x2e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
10-19 22:13:46:144 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20,
10-19 22:13:46:149 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x73, 0x65,
10-19 22:13:46:154 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x65,
10-19 22:13:46:158 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x61,
10-19 22:13:46:163 0x73, 0x68, 0x20, 0x61, 0x6c, 0x67, 0x6f, 0x72,
10-19 22:13:46:168 0x69, 0x74, 0x68, 0x6d, 0x20, 0x77, 0x69, 0x74,
10-19 22:13:46:174 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61,
10-19 22:13:46:179 0x73, 0x68, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77,
10-19 22:13:46:184 0x61, 0x72, 0x65, 0x20, 0x62, 0x6c, 0x6f, 0x63,
10-19 22:13:46:189 0x6b, 0x2e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
10-19 22:13:46:194 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74,
10-19 22:13:46:198 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x73,
10-19 22:13:46:204 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74,
10-19 22:13:46:209 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x68,
10-19 22:13:46:214 0x61, 0x73, 0x68, 0x20, 0x61, 0x6c, 0x67, 0x6f,
10-19 22:13:46:219 0x72, 0x69, 0x74, 0x68, 0x6d, 0x20, 0x77, 0x69,
10-19 22:13:46:224 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68,
10-19 22:13:46:229 0x61, 0x73, 0x68, 0x20, 0x68, 0x61, 0x72, 0x64,
10-19 22:13:46:234 0x77, 0x61, 0x72, 0x65, 0x20, 0x62, 0x6c, 0x6f,
10-19 22:13:46:238 0x63, 0x6b, 0x2e, 0x00,
SHA1算法运算(同步模式):
10-19 22:13:46:243 SHA1:
10-19 22:13:46:247 HASH Result:
10-19 22:13:46:251 0x8a, 0x50, 0x60, 0xae, 0x38, 0xfd, 0x7c, 0x73,
10-19 22:13:46:255 0x5b, 0x85, 0x53, 0x41, 0x51, 0x99, 0x77, 0xb7,
10-19 22:13:46:260 0x8f, 0x91, 0xee, 0x70,
SHA224算法运算(同步模式):
10-19 22:13:46:265 SHA224:
10-19 22:13:46:270 HASH Result:
10-19 22:13:46:274 0x08, 0xef, 0x97, 0x98, 0x25, 0x90, 0xc4, 0xa2,
10-19 22:13:46:278 0x01, 0xb7, 0xb1, 0x82, 0x4b, 0x6f, 0x24, 0xfc,
10-19 22:13:46:282 0x5d, 0x0a, 0xab, 0x8b, 0x96, 0xcc, 0xd2, 0x61,
10-19 22:13:46:287 0xeb, 0xb8, 0x10, 0x94,
SHA256算法运算(同步模式):
10-19 22:13:46:292 SHA256:
10-19 22:13:46:296 HASH Result:
10-19 22:13:46:300 0xea, 0x72, 0x91, 0xbd, 0xbe, 0xb1, 0x6b, 0xe7,
10-19 22:13:46:305 0x9c, 0xe2, 0xbf, 0xf4, 0xfa, 0x40, 0x12, 0x35,
10-19 22:13:46:311 0xfc, 0xbd, 0x44, 0x24, 0xb9, 0x5c, 0x09, 0xb0,
10-19 22:13:46:316 0x10, 0x67, 0x62, 0x76, 0x8e, 0xdb, 0xc5, 0x41,
SM3算法运算(同步模式):
10-19 22:13:46:321 SM3:
10-19 22:13:46:324 HASH Result:
10-19 22:13:46:328 0xfc, 0xf6, 0x99, 0x0c, 0x78, 0xb2, 0x0c, 0x4f,
10-19 22:13:46:333 0xf2, 0x54, 0x5e, 0xf0, 0xdd, 0x64, 0xd3, 0x36,
10-19 22:13:46:339 0x2a, 0x98, 0xdb, 0x91, 0x74, 0x7d, 0x29, 0xaa,
10-19 22:13:46:344 0x33, 0x53, 0xa7, 0x9d, 0xae, 0xa6, 0x6b, 0x65,
SHA1算法运算(中断模式):
10-19 22:13:46:349 SHA1(IT):
10-19 22:13:46:353 HASH Result(IT):
10-19 22:13:46:357 0x8a, 0x50, 0x60, 0xae, 0x38, 0xfd, 0x7c, 0x73,
10-19 22:13:46:362 0x5b, 0x85, 0x53, 0x41, 0x51, 0x99, 0x77, 0xb7,
10-19 22:13:46:368 0x8f, 0x91, 0xee, 0x70,
SHA1算法运算(拆分数据后多次计算模式):
10-19 22:13:46:373 SHA1(multiple):
10-19 22:13:46:377 HASH Result(multiple):
10-19 22:13:46:382 0x8a, 0x50, 0x60, 0xae, 0x38, 0xfd, 0x7c, 0x73,
10-19 22:13:46:386 0x5b, 0x85, 0x53, 0x41, 0x51, 0x99, 0x77, 0xb7,
10-19 22:13:46:391 0x8f, 0x91, 0xee, 0x70,
异常诊断
警告
如果HASH的输入、输出内存使用PSRAM,需要注意缓存(cache)同步:
执行HASH run之前需要对输入内存同步缓存,保证HASH读到所需的数据.
HASH完成后,可能需要对输出内存同步缓存,保证读到正确数据。
参考文档
更新记录
版本 |
日期 |
发布说明 |
---|---|---|
0.0.1 |
10/2024 |
初始版本 |