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