hmac_sha256 C语言实现
时间: 2024-11-08 20:07:40 浏览: 54
HMAC (Hash-based Message Authentication Code) 使用一个密钥和一个安全散列函数来创建消息认证码,常用于保护数据的完整性和来源。SHA-256 是一种常见的哈希函数,其全称 Secure Hash Algorithm 256 位。
在C语言中实现HMAC-SHA256通常需要依赖于一些第三方库,如 OpenSSL 或者 LibTomCrypt。以下是一个使用OpenSSL库的基本示例:
```c
#include <openssl/hmac.h>
#include <openssl/sha.h>
size_t hmac_sha256(const unsigned char *key, size_t key_len,
const unsigned char *msg, size_t msg_len,
unsigned char *digest)
{
HMAC_CTX ctx;
unsigned char hmac[SHA256_DIGEST_LENGTH];
// 初始化HMAC上下文
HMAC_Init_ex(&ctx, key, key_len, EVP_sha256(), NULL);
// 计算HMAC
HMAC_Update(&ctx, msg, msg_len);
HMAC_Final(&ctx, hmac, &hmac_len);
// 将结果复制到用户提供的buffer
memcpy(digest, hmac, SHA256_DIGEST_LENGTH);
// 清理上下文
HMAC_Destroy_ex(&ctx);
return SHA256_DIGEST_LENGTH;
}
```
在这个例子中,`key`是你的密钥,`msg`是要加密的消息,`digest`是存储生成的HMAC的地方。记住在实际应用中,你需要处理错误并确保正确清理资源。
阅读全文