openssl3.4.0 hmac加密例子
时间: 2024-12-17 11:31:04 浏览: 3
在 OpenSSL 3.4.0 中,HMAC (Hash-based Message Authentication Code) 是一种常用的密码散列函数,用于验证数据的完整性和来源。以下是一个简单的 HMAC 加密示例,使用 SHA-256 算法:
```bash
# 安装 OpenSSL (如果尚未安装)
sudo apt-get install openssl
# 创建一个密钥(这里我们使用随机生成)
key="your_secret_key" # 替换为你想要使用的字符串
# 使用 OpenSSL 进行 HMAC 加密
echo "Your message to be authenticated" | openssl dgst -hmac "$key" -sha256 -binary > hmac_output.bin
# 输出结果将是一个二进制文件,可以保存下来作为安全的数据摘要
cat hmac_output.bin
```
在这个例子中,`dgst` 命令用于执行哈希操作,`-hmac` 参数指定密钥,`-sha256` 指定使用的散列算法(SHA-256),而 `-binary` 表明输出为二进制格式。
如果你想查看原始消息的 HMAC,你可以反序列化它并转换回文本:
```bash
openssl enc -base64 < hmac_output.bin > decrypted_hmac.txt
cat decrypted_hmac.txt
```
相关问题
openssl3.4.0 hmac c语言例子
OpenSSL 3.4.0 提供了HMAC (Hash-based Message Authentication Code) 功能,它允许通过哈希函数对数据进行加密以验证消息完整性和来源。以下是使用C语言的一个简单示例,展示如何使用OpenSSL HMAC库计算SHA256哈希值:
```c
#include <openssl/hmac.h>
#include <openssl/sha.h>
#include <string.h>
// 定义密钥和数据
const char *key = "my_secret_key";
const char *data = "Hello, OpenSSL HMAC Example!";
size_t key_len = strlen(key);
size_t data_len = strlen(data);
// 创建HMAC结构体,并设置哈希算法为SHA256
unsigned char hmac_output[HMAC_SHA256_DIGEST_LENGTH];
HMAC_CTX hmac;
HMAC_Init_ex(&hmac, (unsigned char*)key, key_len, EVP_sha256(), NULL);
// 计算HMAC
HMAC_Update(&hmac, (unsigned char*)data, data_len);
HMAC_Final(&hmac, hmac_output, &hmac_outlen);
// 清理HMAC上下文
HMAC_Final(&hmac, NULL, NULL);
HMAC_cleanup(&hmac);
// 打印结果
printf("HMAC-SHA256: ");
for(size_t i = 0; i < HMAC_SHA256_DIGEST_LENGTH; ++i) {
printf("%02x", hmac_output[i]);
}
printf("\n");
openssl最新版本 hmac c语言例子
OpenSSL是一个广泛使用的开源加密库,它包含了HMAC (Hash-based Message Authentication Code) 的实现。HMAC是一种常用的密码散列函数,用于验证数据的完整性和来源。
在C语言中使用openssl的HMAC功能,你需要先包含`<openssl/hmac.h>`头文件,并链接`-lcrypto`库。下面是一个简单的HMAC-SHA256的例子:
```c
#include <openssl/hmac.h>
#include <openssl/sha.h>
// 定义密钥和消息
const unsigned char key[] = "my_secret_key";
size_t key_len = strlen(key);
const unsigned char msg[] = "Hello, World!";
size_t msg_len = strlen(msg);
// 使用SHA256哈希算法创建HMAC
unsigned char hmac_sha256[HMAC_DIGEST_LENGTH];
HMAC(HMAC SHA256, key, key_len, (unsigned char*)msg, msg_len, hmac_sha256, NULL);
// 输出生成的HMAC
for(size_t i = 0; i < HMAC_DIGEST_LENGTH; i++) {
printf("%02x", hmac_sha256[i]);
}
```
在这个例子中,我们首先初始化HMAC结构体,然后调用`HMAC()`函数计算HMAC值。最后,通过循环打印出HMAC的二进制表示。
阅读全文