Linux C语言使用hmac_sha1实现对中间带多个换行符的字符串进行带key的加密
时间: 2024-03-09 14:47:50 浏览: 107
使用mac_sha1算法对中间带多个换行符的字符串进行带key的加密,可以按照以下步骤进行:
1. 使用openssl库中的hmac_sha1函数,需要在代码中引用openssl/hmac.h头文件。
2. 定义一个key字符串和一个data字符串,分别存储加密的密钥和待加密的字符串。例如:
```
char *key = "mykey";
char *data = "string\nwith\nmultiple\nline\nbreaks";
```
3. 将data字符串中的换行符替换为'\0',以便在后面计算长度时正确计算。例如:
```
int len = strlen(data);
for(int i = 0; i < len; i++){
if(data[i] == '\n'){
data[i] = '\0';
}
}
```
4. 调用hmac_sha1函数进行加密,将结果存储在一个char数组中。例如:
```
unsigned char result[EVP_MAX_MD_SIZE];
unsigned int result_len;
HMAC(EVP_sha1(), key, strlen(key), (unsigned char*)data, strlen(data), result, &result_len);
```
5. 将加密后的结果转换为16进制字符串,方便输出和存储。例如:
```
char hex_result[result_len * 2 + 1];
for(int i = 0; i < result_len; i++){
sprintf(hex_result + i*2, "%02x", result[i]);
}
hex_result[result_len * 2] = '\0';
```
最终得到的hex_result即为带key的加密后的结果。
阅读全文