OpenSSL测试-HMAC

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的内容,提交完整代码和程序运行结果截图以及两次结果的对比。

posted @ 2024-04-29 09:32  20211211  阅读(145)  评论(0)    收藏  举报