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

openssl编程之sm3哈希代码示例


int openssl_sm3() {EVP_MD_CTX* mdctx;const EVP_MD* mdfunc;unsigned char md_value[EVP_MAX_MD_SIZE];unsigned int md_len, i;// 初始化MD5函数mdfunc = EVP_sm3();if (!mdfunc) {printf("sm3 algorithm not available\n");return -1;}// 创建MD5上下文mdctx = EVP_MD_CTX_new();if (!mdctx) {printf("Memory allocation failure\n");return -1;}// 初始化MD5上下文,指定使用的摘要算法if (1 != EVP_DigestInit_ex(mdctx, mdfunc, NULL)) {printf("Digest initialization failed\n");EVP_MD_CTX_free(mdctx);return -1;}// 提供数据以进行摘要计算if (1 != EVP_DigestUpdate(mdctx, "123", strlen("123"))) {printf("Digest update failed\n");EVP_MD_CTX_free(mdctx);return -1;}// 完成摘要计算if (1 != EVP_DigestFinal_ex(mdctx, md_value, &md_len)) {printf("Digest finalization failed\n");EVP_MD_CTX_free(mdctx);return -1;}// 清理资源EVP_MD_CTX_free(mdctx);printf("sm3: ");for (int i = 0; i < md_len; i++) {printf("%02x", md_value[i]);}printf("\n");return 0;
}
http://www.wxhsa.cn/company.asp?id=288

相关文章:

  • CRMEB标准版PHP订单列表功能解析与实战应用
  • timescaledb在ubuntu上的高可用部署步骤记录
  • Mybatis
  • vue3不允许缓存组件keep-alive直接包裹router-view
  • 你的部署流程已然落伍-热重启的失传艺术
  • 安全不是一个功能-而是一个地基
  • Hall 定理相关
  • docker save load 案例
  • Python中的枚举类
  • 数据结构与算法-25.红黑树
  • 第一周个人作业
  • Python 虚拟环境使用和打包成exe程序
  • Docker存储
  • linux调优工具的简单介绍
  • 多线程同步问题-从语法到硬件
  • SAC In JAX【个人记录向】
  • 1.2 亿篇论文数据集,多学科学术语料库,涵盖医学、化学、生物学、人文、物理、工程、数学、生态、经济与计算机科学,用于 NLP、知识图谱与大模型训练
  • Putty 工具集 plink和pscp使用
  • MyEMS:开源驱动下的企业能源管理革新者 —— 从技术架构到 “双碳” 落地的实践之路
  • JWT攻击详解与CTF实战
  • MyEMS:开源能源管理的破局者
  • github拉项目报Failed to connect to github.com port 443失败解决方法
  • 多进程、多线程、分布式锁
  • ECT-OS-JiuHuaShan 的终极使命是构建一个从数学到伦理皆可被绝对推理的确定性宇宙模型
  • 服务治理
  • ? #2
  • 第9章 STM32 TCP配置和测试
  • 软件开发方法与模型完全指南(从厨房到盛宴的完全指南)
  • 介绍Activiti BPMN visualizer插件的图形界面
  • NvM代码级别的调用