OpenSSL 用SM3算法进行hash

如果需要使用 SM3 Hash 操作,则需要使用1.1.1以上版本的OpenSSL。

主要是用到了 Openssl EVP (high-level cryptographic functions),它提供了丰富的密码学中的函数。

具体实现:

#include <openssl/evp.h>
#include <openssl/aes.h>bool openssl_sm3_hash(const vector<string>& input,
unsigned char* buffer,
unsigned int* buf_len)
{if (input.empty())return false;memset(buffer, 0, *buf_len);EVP_MD_CTX* ctx = EVP_MD_CTX_new();// 设置使用SM3if (!EVP_DigestInit_ex(ctx, EVP_sm3(), NULL)) {cout << "Failed to init" << endl;return false;}for (const auto& i: input) {if (!EVP_DigestUpdate(ctx, i.c_str(), i.size())) {cout << "Failed to update" << endl;return false;}}if (!EVP_DigestFinal_ex(ctx, buffer, buf_len)) {cout << "Failed to final" << endl;return false;}EVP_MD_CTX_free(ctx);return true;
}

OpenSSL 用SM3算法进行hash相关推荐

  1. HASH和HMAC(6):SM3算法原理

    协议标准:http://www.sca.gov.cn/sca/xxgk/2010-12/17/1002389/files/302a3ada057c4a73830536d03e683110.pdf 算法 ...

  2. sm3算法实现java_[转]国密SM3杂凑算法与实现

    国密办已于去年公布国产商密算法SM3,http://www.oscca.gov.cn/News/201012/News_1199.htm,这给其应用和开发带来了方便,也见网上有许多实现的例子,出于一个 ...

  3. 哈希算法(Hash函数)简单介绍

    1.什么是哈希算法?(Hash函数) 哈希算法的定义和原理: 将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则,就是哈希算法.而通过原始数据映射之后得到的二进制值串就是哈希值. 设计一 ...

  4. 国密算法(SM3)java语言的实现:利用bcprov和huttol库来实现SM3算法,国产哈希算法

    SM3简介: SM3是国产哈希算法 SM3采用的一种密码散列函数标准,由国家密码管理局于2010年12月17日发布.相关标准为"GM/T 0004-2012 <SM3密码杂凑算法> ...

  5. Openssl ECC椭圆曲线算法 - 密钥/签名/验签/加密/解密/SM2密文 - 序列化反序列化导出导入 - C源码

    . . . . 废话不多说,本代码继承自另外一位讲解Openssl ECC椭圆曲线算法大佬的源代码:https://blog.csdn.net/scuyxi/article/details/59182 ...

  6. 感知哈希算法(perceptual hash algorithm),

    感知哈希算法(perceptual hash algorithm),它的作用是对每张图像生成一个"指纹"(fingerprint)字符串,然后比较不同图像的指纹.结果越接近,就说明 ...

  7. 指令流水 一个时钟周期 出一个结果_以SM3算法为例,构建一个软硬协作算法加速器:性能分析与优化...

    衡量一款 ASIC 芯片可以从 PPA 三个角度进行. PPA 指的是: Power/Performance/Area,功耗 / 性能 / 面积. 衡量 FPGA 设计同样可以参照 PPA,但又有所不 ...

  8. php dsa 签名,openssl使用DSA算法生成签名实例详解_PHP教程

    文章给大家介绍基于openssl使用DSA算法生成签名实例,生成签名方法很简单,我们需要懂得中间的原理就比较复杂了,大家一起来看看吧. 命令: openssl> dgst -dss1 -sign ...

  9. 哈希算法(hash)加密解密

    一.哈希算法(hash)加密解密介绍 哈希,英文叫做 hash. 哈希函数(hash function)可以把 任意长度的数据(字节串)计算出一个为固定长度的结果数据. 我们习惯把 要计算 的数据称之 ...

  10. 调用OpenSSL实现RC4算法(详细步骤)

    调用OpenSSL实现RC4 OpenSSL实现RC4算法 实验环境简介 实验源码 实验详细步骤 OpenSSL实现RC4算法 实验环境简介 Win10操作系统: Visual studio 2022 ...

最新文章

  1. python中raise stoplteration_推导表达式迭代器生成器模块和包 | 编程电脑技术交流...
  2. 如何得到通过GetOpenFileName选择的多个文件的文件名
  3. Qt Creator 最实用的快捷操作
  4. 排序---对二维数组的排序
  5. LInux 下安装 python notebook 及指向路径,运行计时,炫酷的深蓝午夜主题,本地登陆远程服务器
  6. python爬虫知乎图片_Python爬虫入门教程 25-100 知乎文章图片爬取器之一
  7. mysql操作json优点和缺点_MySQL与JSON-为什么?
  8. jQuery:仿MSN网站的tab效果
  9. 如何从需求文档中辨认客户(一)
  10. 计算机系统概论实验报告3,东南大学计算机网络第四次实验报告.docx
  11. idea ---- 快捷键
  12. nodejs express使用HTML模板
  13. .net知识和学习方法系列(二十五) .net中的windows service与服务操作
  14. TimeLine下载地址
  15. cad画计算机网络图,CAD迷你家装五步快速绘制平面图教程
  16. 西门子S7-200 SMART控制步进电机(一)
  17. python实现wifi自动连接,解决电脑wifi经常断开的问题
  18. mcrpg职业系统服务器,我的世界MC-梦想大陆RPG服务器1.7.10
  19. mp3lame linux 编译,ubantu-16+ndk-r14b 编译 ffmpeg-4.0.2+lame_mp3-3.99.5
  20. 如何获取所有股票代码

热门文章

  1. 使用工具Android Studio实现一个简单的Android版的新闻APP之美
  2. linux batch date,BatchDate免费版
  3. Himall商城Api签名帮助类
  4. 使用devcpp遇到的常见错误解决方法
  5. TideSec远控免杀学习四(BackDoor-Factory+Avet+TheFatRat)
  6. Web GIS多种方式发布动态地图服务及显示(1)
  7. 摄像头录像软件测试初学者,几款好用的摄像头视频捕获工具推荐
  8. 电脑摄像头测试软件在线,AMCap 摄像头测试软件使用说明
  9. 水系图一般在哪里找得到_进展 | 水系钾离子电池研究取得重要进展
  10. Face3D学习笔记(4)3DMM示例源码解析【中上】3DMM模型