c - 使用 OpenSSL 进行高性能 HMAC 计算
问题描述
当我们使用 OpenSSL (3.0) 作为我们的加密抽象层时,我正在对我们的代码进行一些性能分析。我注意到做 HMAC 计算占用了我们大部分时间,我想知道是否有更有效的方法来做事。我们有两个主要函数(QuicHashCreate和QuicHashCompute),我们基本上采用 { Algorithm, Salt/Secret, Input } 并生成 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_key
最终EVP_DigestSignInit
消耗了我几乎所有的 CPU。由于使用的 Salt/Secrets 是动态的,我无法真正缓存这些对象。有没有更好、更高效的方法来解决这个问题?
解决方案
我发布这个是因为它可以工作,但不接受它,因为它被最新的 OpenSSL 版本标记为已弃用。
以下替换调用有效:
HMAC_CTX_new
HMAC_Init_ex
HMAC_Update
HMAC_Final
而现在,HMAC 甚至没有出现在我的性能跟踪中。这完全解决了我的问题,但我想知道是否还有更好的方法来做到这一点。
推荐阅读
- synchronization - 将单个应用程序/控制器写入数据库是否是一种标准做法
- c# - 如何从随机数组中选择一个随机字符串
- c# - 即使在附加刚体组件后,子弹也会穿过 Unity3d 的生存射击项目中的游戏对象
- c++ - 弹出“调试断言失败”
- php - NetBeans 中的目录句柄问题
- ruby-on-rails - 如何在我的种子文件中存储连接表实例的多个 ID?
- matlab - Endash 用于减号,而不是用于 matlab 的连字符
- python - 获取由 Tkinter 画布线限定的区域
- arrays - 在再次选择相同元素之前选择具有保证间距的随机元素
- javascript - 将 Onclick 参数替换为 img src 路径的一部分