当前位置: 首页 > news >正文

阿钱¥¥¥openssl sm3 hmac api使用和命令行验证

1. 命令行格式验证sm3 hmac

echo -n "abc" | openssl dgst -sm3 -hmac "01234567890123456789012345678901" 说明: 1. 01234567890123456789012345678901 为字符串key,共32位 2. echo -n "abc",共abc3个字符长度,不包含任何其他字符 执行如下: root@ubuntu:/work2/learn/openssl/sm3# echo -n "abc" | openssl dgst -sm3 -hmac "01234567890123456789012345678901" (stdin)= ce68f88b05a45a87303a2a3eca942e46d4dce6d06596fa52b3fc0ce43440d5dc

2. 基于C语标题言使用openssl api接口实现 sm3 sm3_hmac

root@ubuntu:/work2/learn/openssl/sm3# ./sm3_hmac_demo hamc hmac_excepted_len 32: ce 68 f8 8b 05 a4 5a 87 30 3a 2a 3e ca 94 2e 46 d4 dc e6 d0 65 96 fa 52 b3 fc 0c e4 34 40 d5 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

代码.

// 编译// 编译:gcc -g sm3_hmac_demo.c -o sm3_hmac_demo -L/usr/lib -lssl -lcrypto#include<stdio.h>#include<string.h>#include<openssl/evp.h>#include<openssl/x509v3.h>#include<openssl/hmac.h>voidsm3_hmac(constEVP_MD*evp_md,constvoid*key,intkey_len,constunsignedchar*d,size_tn,unsignedchar*md,unsignedint*md_len){HMAC_CTX*c=NULL;if((c=HMAC_CTX_new())==NULL){printf("%s %d \n",__func__,__LINE__);gotoerr;}if(!HMAC_Init_ex(c,key,key_len,evp_md,NULL)){printf("%s %d \n",__func__,__LINE__);gotoerr;}if(!HMAC_Update(c,d,n)){printf("%s %d \n",__func__,__LINE__);gotoerr;}if(!HMAC_Final(c,md,md_len)){printf("%s %d \n",__func__,__LINE__);gotoerr;}HMAC_CTX_free(c);err:HMAC_CTX_free(c);}intmain(){unsignedcharkey[]="01234567890123456789012345678901";unsignedchardata[]={'a','b','c','0'};unsignedcharhmac_value[64];unsignedinthmac_excepted_len;memset(hmac_value,0,sizeof(hmac_value));// sm3_hmac(EVP_sm3(),key,sizeof(key),data,sizeof(data),hmac_value,&hmac_excepted_len);HMAC(EVP_sm3(),key,sizeof(key),data,sizeof(data)-1,hmac_value,&hmac_excepted_len);printf("hamc hmac_excepted_len %d:\n",hmac_excepted_len);inti;for(i=0;i<sizeof(hmac_value);i++){printf("%02x ",hmac_value[i]);}printf("\n");return0;}
http://www.jsqmd.com/news/855937/

相关文章:

  • 解析日本工程塑料厂家代理新日铁住金产品的核心价值与
  • 从零到一:AI 3D建模革命,5分钟让图片“活“起来的完整实战指南
  • Gev部署运维指南:生产环境最佳实践与性能监控
  • 留学生面试遇“压力面试”?2026海外职场高压应对实战指南
  • 告别手动清理!用TypeScript给你的LocalStorage加个自动过期功能(附完整源码)
  • CANape数据处理实战:MF4文件分析、导出Excel与A2L文件替换全流程解析
  • linux文件基本操作作业(含文件基本操作的重点知识内容及截图)
  • 从选题到终稿:okbiye 如何用一套流程,解决本科毕业论文 90% 的痛点
  • 从‘浴盆曲线’到加速测试:拆解企业级SSD如何做到MTBF 200万小时
  • HarmonyOS 6(API 23)实战
  • 2026年4月技术好的安检仪源头厂家口碑推荐,金属探测门/安检设备/安检机/智能安检/安检仪,安检仪源头厂家推荐分析 - 品牌推荐师
  • Angular-dragdrop与Bootstrap集成:构建响应式拖放界面的完美方案
  • ScrollMonitor:JavaScript滚动监控库的完整指南 - 如何高效监听元素进入视口
  • 想让LQR控制器精准跟踪轨迹?别急着调参,先搞懂‘增广系统’这个核心概念
  • C++继承详细介绍
  • 别再被Linux的free命令骗了!手把手教你读懂‘可用内存’available的真实含义
  • 2026年热门的地源热泵节能效果/地源热泵节能率/车间地源热泵施工品牌公司推荐 - 品牌宣传支持者
  • CANN/asc-devkit Tiling模板参数选择宏
  • Linux 软件包管理(含上机实例)
  • WS2812B灯条颜色错乱:从原理到实战的完整排查与解决方案
  • 告别邮件测试烦恼:MailHog一站式解决方案让开发调试更高效
  • HarmonyOS 6(API 23)实战1
  • 为什么你需要一个完整的Unity历史版本下载库?开发者必备的版本管理解决方案
  • 面试官:你知道的限流算法有哪些?
  • Prodigal基因预测工具:3天快速掌握原核生物基因发现终极指南
  • 刚入职大厂三个月被边缘化?2026 留学生警惕“安静解雇”的隐性寒冬
  • CANN/asc-devkit:half2相等比较函数
  • Zynq Z7 DDR布线翻车实录:从信号完整性仿真到实测,我们踩了这些坑
  • 独角数卡支付系统:如何构建高可用的自动售货支付解决方案
  • GTA5终极防护与增强指南:YimMenu完整使用教程