HMAC-SHA256加解密使用及C语音的例子
时间: 2024-10-09 15:03:12 浏览: 24
HMAC (Hash-based Message Authentication Code) 是一种广泛使用的消息认证码算法,它结合了哈希函数和密钥,用于验证数据的完整性和来源。SHA256是一种安全的哈希函数,而HMAC-SHA256通常用于加密和验证数据。
在C语言中,使用`OpenSSL`库可以方便地操作HMAC-SHA256。以下是简单的HMAC-SHA256加密和解密示例:
```c
#include <openssl/hmac.h>
#include <openssl/sha.h>
// 加密函数
unsigned char* hmac_sha256(unsigned char* key, size_t key_len, const unsigned char* data, size_t data_len, unsigned char* out)
{
HMAC_CTX ctx;
HMAC_Init_ex(&ctx, key, key_len, EVP_sha256(), NULL);
HMAC_Update(&ctx, data, data_len);
HMAC_Final(&ctx, out, &out_len);
HMAC_CTX_cleanup(&ctx);
return out;
}
// 解密函数实际上是验证,因为HMAC是不可逆的
int verify_hmac_sha256(unsigned char* key, size_t key_len, const unsigned char* data, size_t data_len, const unsigned char* mac)
{
unsigned char mac_out[HMAC_DIGEST_LENGTH];
if (hmac_sha256(key, key_len, data, data_len, mac_out) == mac)
return 1; // 验证通过
else
return 0; // 验证失败
}
阅读全文