5

我正在将 PHP 应用程序移植到 C++。PHP 应用程序正在使用这个函数:

hash_hmac — 使用 HMAC 方法生成键控散列值

如果我有这段代码,它实际上在做什么?

$sStr = hash_hmac ('sha256', $mydata,$mykey, $raw = true)

我知道它使用 sha256 和我的密钥加密了一些数据,但是如何在 C++ 中执行此操作?

我找到了hmacsha2库,但不确定它们是否是我需要的。

4

1 回答 1

16

我会考虑研究OpenSSL,一个可移植且完整的密码库(尽管它的名字,它不只是做 SSL)。它有一个HMAC 库,您肯定可以将其包装以获得类似的功能。

这是一个关于如何使用 OpenSSL 的 HMAC 库的示例,取自StackOverflow 上的另一个问题(我的注释):

  // Initialize HMAC object.
HMAC_CTX ctx;
HMAC_CTX_init(&ctx);

  // Set HMAC key.
HMAC_Init_ex(&ctx, key, 16, EVP_sha256(), NULL);

  // May be called repeatedly to insert all your data.
HMAC_Update(&ctx, data, 8);

  // Finish HMAC computation and fetch result.
HMAC_Final(&ctx, result, &result_len);

  // Done with HMAC object.
HMAC_CTX_cleanup(&ctx);
于 2011-09-18T13:40:34.437 回答