hmac_sha1函数
时间: 2023-07-29 07:12:27 浏览: 141
HMAC-SHA1 是一种基于 SHA-1 哈希算法的消息认证码算法,用于对消息进行完整性和真实性验证。以下是一个 C++ 实现的 HMAC-SHA1 函数:
#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 库。
相关推荐















