HASH校验测试
H533的数据安全外设很是丰富,今天测试一下HASH校验外设的性能。
校验模式配置为SHA-256,为测试硬件性能,同时使用mbedtls的sha-256校验算法做对比。
测试代码如下:
cubemx生成初始化程序,数据格式选择 HASH_BYTE_SWAP,校验方式为 HASH_ALGOSELECTION_SHA256
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] HASH Initialization Function
- * @param None
- * @retval None
- */
- static void MX_HASH_Init(void)
- {
- /* USER CODE BEGIN HASH_Init 0 */
- /* USER CODE END HASH_Init 0 */
- /* USER CODE BEGIN HASH_Init 1 */
- /* USER CODE END HASH_Init 1 */
- hhash.Instance = HASH;
- hhash.Init.DataType = HASH_BYTE_SWAP;
- hhash.Init.Algorithm = HASH_ALGOSELECTION_SHA256;
- if (HAL_HASH_Init(&hhash) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN HASH_Init 2 */
- /* USER CODE END HASH_Init 2 */
- }
测试代码:
- /*******************************************************************************
- * @brief sha256_demo.
- * \param[in] none
- * \retval: none
- *******************************************************************************/
- int sha256_demo(int argc, char * argv[])
- {
- uu08 * src , *out;
- uu32 clk_start;
- mbedtls_sha256_context *sha256;
-
- dbg_print("\nmbed SHA256 test :\n");
-
- // 请求内存
- src = malloc(nKB(8));
- out = calloc(1, 32);
- sha256 = malloc(sizeof(mbedtls_sha256_context));
-
- // 开始
- loop(nKB(8))
- src[index] = index;
-
- // 输入数据流,长度任意
- clk_start = bsp_cpu_clks_get();
- mbedtls_sha256_init(sha256);
- mbedtls_sha256_starts(sha256, 0); // \c 0 for SHA-256, or \c 1 for SHA-224
- mbedtls_sha256_update(sha256, src, nKB(8));
- mbedtls_sha256_finish(sha256, out);
- mbedtls_sha256_free(sha256);
- dbg_print("MBEDTLS sha256 time: %d us\n", bsp_clks_to_us(bsp_cpu_clks_get() - clk_start));
-
- // 显示
- dbg_u8_print("out : \n", out, 32, 16);
- memset(out, 0, 32);
- loop(nKB(8))
- src[index] = index;
- clk_start = bsp_cpu_clks_get();
-
- HAL_HASH_Start(&hhash, src, nKB(8),out,100000);
- dbg_print("\nSTM32 sha256 time: %d us\n", bsp_clks_to_us(bsp_cpu_clks_get() - clk_start));
- dbg_u8_print("out : \n", out, 32, 16);
-
- // 释放内存
- free(src);
- free(out);
- free(sha256);
-
- return 0;
- }
串口输入 sha256_demo 执行测试程序,测试内容为对分别使用mebedtls-sha256和stm32硬件对8KB数据计算校验码,输出校验结果和计算时间。
测试结果如下:
mbedtls 校验3260us,STM32硬件加密解密耗时153us,速度竟然有20倍之多。
下面附上测试工程
SOFTWARE.rar
(8.76 MB, 下载次数: 2)
|