首页 > 解决方案 > 使用 OpenSSL 进行高性能 HMAC 计算

问题描述

当我们使用 OpenSSL (3.0) 作为我们的加密抽象层时,我正在对我们的代码进行一些性能分析。我注意到做 HMAC 计算占用了我们大部分时间,我想知道是否有更有效的方法来做事。我们有两个主要函数(QuicHashCreateQuicHashCompute),我们基本上采用 { Algorithm, Salt/Secret, Input } 并生成 HMAC 输出。

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

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

标签: cperformanceopensslhmac

解决方案


我发布这个是因为它可以工作,但不接受它,因为它被最新的 OpenSSL 版本标记为已弃用。

以下替换调用有效:

  • HMAC_CTX_new
  • HMAC_Init_ex
  • HMAC_Update
  • HMAC_Final

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


推荐阅读