hmac_sha1函数
时间: 2023-07-29 18:12:27 浏览: 126
HMAC-SHA1 是一种基于 SHA-1 哈希算法的消息认证码算法,用于对消息进行完整性和真实性验证。以下是一个 C++ 实现的 HMAC-SHA1 函数:
```c++
#include <openssl/hmac.h>
#include <openssl/sha.h>
std::string hmac_sha1(const std::string& key, const std::string& message) {
unsigned char digest[SHA_DIGEST_LENGTH];
HMAC_CTX ctx;
HMAC_CTX_init(&ctx);
HMAC_Init_ex(&ctx, key.c_str(), key.length(), EVP_sha1(), NULL);
HMAC_Update(&ctx, (unsigned char*) message.c_str(), message.length());
unsigned int len = SHA_DIGEST_LENGTH;
HMAC_Final(&ctx, digest, &len);
HMAC_CTX_cleanup(&ctx);
char mdString[SHA_DIGEST_LENGTH*2+1];
for(int i = 0; i < SHA_DIGEST_LENGTH; i++)
sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
return std::string(mdString);
}
```
其中,`HMAC_Init_ex()` 函数初始化 HMAC 上下文,`HMAC_Update()` 函数更新 HMAC 上下文,`HMAC_Final()` 函数完成 HMAC 计算,`HMAC_CTX_cleanup()` 函数清理 HMAC 上下文。`EVP_sha1()` 是 OpenSSL 中实现 SHA-1 哈希算法的函数。该函数将返回一个 EVP_MD 结构体,可以传递给 HMAC_Init_ex() 函数来指定使用 SHA-1 哈希算法计算 HMAC。
请注意,此实现使用了 OpenSSL 库,需要在编译时链接 OpenSSL 库。
阅读全文