我正在将PHP应用程序移植到C ++。 PHP应用程序正在使用此功能:
hash_hmac - 使用HMAC方法生成键控哈希值
如果我有这段代码,它究竟在做什么?
$sStr = hash_hmac ('sha256', $mydata,$mykey, $raw = true)
我知道它使用sha256和我的密钥加密一些数据,但是如何在C ++中执行此操作?
答案 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);