使用OpenSSL进行高性能HMAC计算

问题描述

当我们在加密抽象层中使用OpenSSL(3.0)时,我正在对代码进行性能分析。我注意到进行HMAC计算占用了我们的大部分时间,我想知道是否有一种更有效的处理方法。我们有两个主要功能(QuicHashCreateQuicHashCompute),我们实际上采用了{算法,盐/秘密,输入}并生成HMAC输出。

我们有效调用的函数归结为:

  • EVP_MD_CTX_new
  • EVP_PKEY_new_mac_key
  • EVP_DigestSignInit
  • EVP_DigestSignUpdate
  • EVP_DigestSignFinal
  • EVP_PKEY_free
  • EVP_MD_CTX_free

根据我的分析,EVP_PKEY_new_mac_keyEVP_DigestSignInit最终几乎消耗了我所有的CPU。由于使用的Salt / Secrets是动态的,因此我无法真正缓存这些对象。有没有更好,更高效的方法来解决这个问题?

解决方法

我之所以发布此消息是因为它有效,但由于最新的OpenSSL版本已将其标记为已弃用,因此我不接受。

以下替换调用起作用:

  • HMAC_CTX_new
  • HMAC_Init_ex
  • HMAC_Update
  • HMAC_Final

现在,HMAC甚至没有出现在我的性能跟踪中。这样就完全解决了我的问题,但是我想知道是否还有更好的方法可以做到这一点。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...