什么是PHP的hash_hmac函数的C ++等价物?

时间:2011-09-18 13:38:22

标签: php c++ porting sha256

我正在将PHP应用程序移植到C ++。 PHP应用程序正在使用此功能:

  

hash_hmac - 使用HMAC方法生成键控哈希值

如果我有这段代码,它究竟在做什么?

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

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

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

1 个答案:

答案 0 :(得分:16)

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

以下是一个关于如何使用OpenSSL的HMAC库的示例,取自another question on 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);