mbedTLS sha256 的性能现实吗?

Performance of mbedTLS sha256 realistic?

目前我在 stm32f7 nucleo 板上测试 mbedTLS 的 sha256 性能。我用 cycle counter register 测量了 stm32 板的运行周期。测量公式看起来像这样:

DWT->CYCCNT = 0;
uint32_t dwtStart = DWT->CYCCNT;
//uncomment for mbed calculation mbedtls_sha256();
//uncomment for atecc508a calculation atecc508a_sha256();
uint32_t dwtStop = DWT->CYCCNT;
double dStart = (double) dwtStart;
double dStop = (double) dwtStop;
// SystemCoreClock is a constant = 216000000
double result_in_milliseconds = (dStop-Start)/SystemCoreClock * 1000;

我已经在执行硬件散列的微芯片 atecc508a 上测试了 sha 命令,散列 32 字节的数据大约需要 18ms

使用 mbedTLS 仅需 0.05ms 即可在软件中散列 32 字节的数据。

我知道我必须记住,通过 i2c 的通信需要额外的操作时间,但这些结果是否合法?这两个操作之间会有这样的差异吗?

这两个操作return对应的hash到某个输入的32 Bytes。

如果有人能回答我的问题,将不胜感激。

您可以以标准 I2C 速度 (100kbit/s) 传输

0.018*100000 = 1800 bit = 225 byte

在 18 毫秒内(包括 开销)。这不是很多,所以是的,大部分时间都被 i2c 通信用完了,这似乎是合理的。