[STM32H5]【STM32 Nucleo-64测评】HASH校验测试

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)。
---------------------
作者:aple0807
链接:https://bbs.21ic.com/icview-3396304-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值