HASH 引擎是一个针对散列数列算法的运算加速器,用户可以选择不同的散列算法计算内存中特定数据的散列 值。HASH 引擎相比软件算法速度更快,配置也灵活,用户也可以通过自定义初始向量,实现多线程HASH 运 算。HASH 引擎支持算法包括
使用 Hash HAL 驱动程序
Hash可以支持使用轮询和中断模式,它们可以调用不同的HASH接口。
Hash HAL 轮询使用的示例:
#define SPLIT_THRESHOLD 256
static uint8_t g_temp[BUFFER_SIZE];
for (i = 0; i < length; i += SPLIT_THRESHOLD)
{
int last = (i + SPLIT_THRESHOLD >= length) ? 1 : 0;
if (i > 0)
{
}
HAL_HASH_run(&(g_hash_input[i]), last ? length - i : SPLIT_THRESHOLD, last);
}
Hash HAL 轮询使用中断的示例:
void AES_IRQHandler(void)
{
rt_interrupt_enter();
if (hwp_aes_acc->IRQ & HASH_DONE_STAT)
{
rt_sem_release(g_aes_sem);
}
rt_interrupt_leave();
}
....
static uint8_t g_temp[BUFFER_SIZE];
for (i = 0; i < length; i += SPLIT_THRESHOLD)
{
int last = (i + SPLIT_THRESHOLD >= length) ? 1 : 0;
if (i > 0)
{
}
HAL_HASH_run_IT(&(g_hash_input[i]), last ? length - i : SPLIT_THRESHOLD, last);
rt_sem_take(g_aes_sem, RT_TICK_PER_SECOND);
}
....
...