1.命令行操作过程截图和结果
2.完整代码和程序运行结果截图以及两次结果的对比
#include <stdio.h>
#include <openssl/hmac.h>
#include <openssl/evp.h>
#include <openssl/rand.h>
int main() {
// 要加密的字符串
char data[] = "Hello, 苗靖章20211125!";
unsigned char key[32]; // 32字节的密钥
unsigned int result_len;
unsigned char result[EVP_MAX_MD_SIZE]; // 存储结果
// 生成一个随机密钥
if (!RAND_bytes(key, sizeof(key))) {
fprintf(stderr, "Error generating random key\n");
return 1;
}
// 使用HMAC-SM3计算MAC
HMAC(EVP_sm3(), key, sizeof(key), (unsigned char*)data, sizeof(data) - 1, result, &result_len);
// 打印结果
printf("HMAC-SM3: ");
for (unsigned int i = 0; i < result_len; i++) {
printf("%02x", result[i]);
}
printf("\n");
return 0;
}