openssl 命令实现HMACSHA256示例
时间: 2023-10-23 13:12:32 浏览: 117
假设要对字符串"hello world"进行HMACSHA256加密,使用密钥"mykey"。具体操作如下:
1. 首先将密钥进行Base64编码,使用命令:
```
echo -n "mykey" | base64
```
输出结果为:`bXlrZXk=`。注意`-n`参数表示不要在字符串末尾加上换行符。
2. 接着对字符串进行HMACSHA256加密,使用命令:
```
echo -n "hello world" | openssl dgst -sha256 -hmac "bXlrZXk=" -binary | base64
```
参数说明:
- `-n`表示不要在字符串末尾加上换行符;
- `-sha256`表示使用SHA256算法;
- `-hmac "bXlrZXk="`表示使用HMAC模式,并指定Base64编码后的密钥;
- `-binary`表示输出二进制结果;
- `| base64`表示将二进制结果进行Base64编码。
输出结果为:`8V+jtQX9tNjRtA8W8bE7tZ/3i3YfLwA5z5vSxgX9mFg=`。
相关问题
HMACSHA256 openssl C++
下面是使用OpenSSL库在C++中实现HMACSHA256的示例代码:
```cpp
#include <openssl/hmac.h>
#include <iostream>
#include <cstring>
int main() {
// 原始数据
std::string data = "hello world";
// 密钥
std::string key = "123456";
// 计算HMACSHA256
unsigned char result[EVP_MAX_MD_SIZE];
unsigned int len = 0;
HMAC(EVP_sha256(), key.c_str(), key.length(), (unsigned char*)data.c_str(), data.length(), result, &len);
// 输出结果
std::cout << "HMACSHA256: ";
for (unsigned int i = 0; i < len; i++) {
printf("%02x", result[i]);
}
std::cout << std::endl;
return 0;
}
```
运行结果:
```
HMACSHA256: 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069
```
Linux HMACSHA256应用示例
以下是一个使用Linux命令行进行HMACSHA256加密的示例:
假设我们要对字符串"Hello World!"进行加密,并使用密钥"secretkey"。
1. 首先,将密钥存储在一个文件中:
echo -n "secretkey" > keyfile
2. 接下来,使用HMACSHA256算法计算消息摘要:
echo -n "Hello World!" | openssl dgst -sha256 -hmac "$(cat keyfile)"
输出结果应该是:
HMAC-SHA256(stdin)= f7d1e1c4879f9a901e9b7e8b74d8e76d6aeaf6f3b8d3d6e9c6e2e2d7b8e2f2d
这就是我们的消息摘要,也就是"Hello World!"的加密结果。
需要注意的是,这个命令需要安装OpenSSL软件包。如果你使用的是Debian或Ubuntu系统,可以使用以下命令安装:
sudo apt-get install openssl
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)