首页 > 其他分享 >hmac测试

hmac测试

时间:2024-04-29 09:46:13浏览次数:24  
标签:return 测试 CTX ctx HMAC key hmac

openssl命令:

生成hmac:

验证:

C语言代码实现:

代码如下:

 

` #include #include #include #include

int main() {
// 这个例子中,我们将随机生成一个密钥
unsigned char key[EVP_MAX_MD_SIZE];
int key_len = 32;

// OpenSSL 函数 RAND_bytes 用于生成强随机数
if (!RAND_bytes(key, key_len)) {
    fprintf(stderr, "Unable to generate random key.\n");
    return 1;
}

// 要 HMAC 的数据
unsigned char data[] = "Hello, 20211122";

// 使用 HMAC_CTX 进行 HMAC-SM3
HMAC_CTX *hmac_ctx = HMAC_CTX_new();

// 初始化 HMAC-SM3
if (!HMAC_Init_ex(hmac_ctx, key, key_len, EVP_sm3(), NULL)) {
    fprintf(stderr, "HMAC Init failed.\n");
    return 1;
}

// 输入数据到 HMAC
if (!HMAC_Update(hmac_ctx, data, strlen((char*)data))) {
    fprintf(stderr, "HMAC Update failed.\n");
    return 1;
}

// 完成 HMAC 运算
unsigned char hmac_value[EVP_MAX_MD_SIZE];
unsigned int hmac_length;

if (!HMAC_Final(hmac_ctx, hmac_value, &hmac_length)) {
    fprintf(stderr, "HMAC Final failed.\n");
    return 1;
}

// 清理 HMAC_CTX
HMAC_CTX_free(hmac_ctx);

// 打印 HMAC-SM3 值
printf("HMAC-SM3: ");
for (int i = 0; i < hmac_length; i++) {
    printf("%02x", hmac_value[i]);
}
printf("\n");

return 0;

}
`
运行:

验证:

标签:return,测试,CTX,ctx,HMAC,key,hmac
From: https://www.cnblogs.com/unstoppable2striker/p/18165015

相关文章

  • 测试数据不再难,人工智能批量生成给你用!
    简介测试数据是指一组专注于为测试服务的数据,既可以作为功能的输入去验证输出,也可以去触发各类异常场景。测试数据的设计尤为重要,等价类、边界值、正交法等测试用例设计方法都是为了更全面的设计对应的测试数据集。实践演练在批量生成测试数据中,我们需要明确数据的类型、格式......
  • 自动化测试数据生成:Asp.Net Core单元测试利器AutoFixture详解
    引言在我们之前的文章中介绍过使用Bogus生成模拟测试数据,今天来讲解一下功能更加强大自动生成测试数据的工具的库"AutoFixture"。什么是AutoFixture?AutoFixture是一个针对.NET的开源库,旨在最大程度地减少单元测试中的“安排(Arrange)”阶段,以提高可维护性。它的主要目标是让......
  • OpenSSL测试-HMAC
    ......
  • 0429测试2
    1.命令行操作过程截图和结果2.完整代码和程序运行结果截图以及两次结果的对比#include<stdio.h>#include<openssl/hmac.h>#include<openssl/evp.h>#include<openssl/rand.h>intmain(){//要加密的字符串chardata[]="Hello,苗靖章20211125!";unsi......
  • OpenSSL测试-HMAC
    1在openEuler(推荐)或Ubuntu中,使用OpenSSL命令行工具,对消息“Hello,你的姓名学号!”使用HMAC-SM3进行验证。密钥为随机数,自己生成。提交命令行操作过程截图和结果。 2使用C语言和OpenSSL库,在openEuler或Ubuntu上编写程序对字符串“Hello,你的姓名学号!”进行HMAC-SM3加密。密......
  • OpenSSL测试-SM4
    任务详情0.在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务1.使用OpenSSL的命令对你的8位学号(数字)进行加密解密,密钥的前8个字节为你的8位学号,提交过程截图(5')2.使用OpenSSL编程对对"你的8位学号(数字)"进行加密解密,提交代码和运行结果截图。(10’)3.使用龙脉智能......
  • OpenSSL测试-SM4
    0.在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务1.使用OpenSSL的命令对你的8位学号(数字)进行加密解密,密钥的前8个字节为你的8位学号,提交过程截图(5') 2.使用OpenSSL编程对对"你的8位学号(数字)"进行加密解密,提交代码和运行结果截图。(10’) #include<openssl......
  • SM4测试
    SM4代码如下: ``#include<openssl/evp.h>include<stdio.h>include<string.h>intmain(){EVP_CIPHER_CTX*ctx;intlen;intciphertext_len;unsignedchar*plaintext=(unsignedchar*)"20211122";unsignedcharkey[]="20211......
  • 自动化测试框架-数据读取
     1.准备数据:数据格式为{json},放在json文件内,例如这样:   2.工具类:读取.json文件,保存在Map<testCaseName,JSONObject>内publicstaticMap<String,JSONObject>jsonToSearchFilter(StringfileName)throwsIOException{Map<String,JSONObject>result=ne......
  • 软件测试面试题(四)
    1、在项目中如何保证软件质量?项目质量不仅仅是某个人或某个团队来保障的,而是整个团队一起努力的结果,因此,在公司级别需要有一个规范的项目流程。产品,保证迭代过程中的产品逻辑,对于可能的兼容,升级做出预判并给出方案架构设计,满足产品表达的同时,保证设计的延续性开发,产品细......