1 在openEuler(推荐)或Ubuntu中,使用OpenSSL命令行工具,对消息“Hello, 你的姓名学号!”使用HMAC-SM3进行验证。密钥为随机数,自己生成。提交命令行操作过程截图和结果。
2 使用C语言和OpenSSL库,在openEuler或Ubuntu上编写程序对字符串“Hello, 你的姓名学号!”进行HMAC-SM3加密。密钥同上。提交完整代码和程序运行结果截图以及两次结果的对比。
include <stdio.h>
include <string.h>
include <openssl/evp.h>
int main() {
const char *message = "Hello, huyujia20211211";
const char *key_file = "key.txt";
unsigned char key[16];
FILE *fp;
EVP_MD_CTX *ctx;
const EVP_MD *md;
unsigned char digest[EVP_MAX_MD_SIZE];
unsigned int digest_len;
// 读取密钥文件
fp = fopen(key_file, "r");
fread(key, 1, 16, fp);
fclose(fp);
// 初始化HMAC上下文
ctx = EVP_MD_CTX_new();
md = EVP_sm3();
// 执行HMAC计算
EVP_DigestInit_ex(ctx, md, NULL);
EVP_DigestSignInit(ctx, NULL, md, NULL, key);
EVP_DigestSignUpdate(ctx, message, strlen(message));
EVP_DigestSignFinal(ctx, digest, &digest_len);
// 打印加密结果
printf("HMAC-SM3: ");
for (int i = 0; i < digest_len; i++) {
printf("%02x", digest[i]);
}
printf("\n");
// 释放资源
EVP_MD_CTX_free(ctx);
return 0;
}
3 使用龙脉智能钥匙完成2的内容,提交完整代码和程序运行结果截图以及两次结果的对比。