基于OpenSSL 1.1.1版实现的SM2签名与验签C程序
OpenSSL 1.1.1 版提供了对国密 SM4、SM3、SM2 算法的支持。对于 SM2 算法,在源码的 crypto/sm2 目录下,sm2_sign.c 文件中实现了 SM2 签名与验签, sm2_crypt.c 文件中实现了 SM2 加密与解密,这些源码是很好的学习范例。但是 sm2.h, sm3.h, sm4.h 这些头文件是放在源码的 crypto/include/internal 目录下,这就导致用户不能直接调用到 sm2_sign.c 和 sm2_crypt.c 中实现的函数。如果用户需要做 SM2 签名验签或加解密,需要使用统一的 EVP 抽象接口。
有时候做 SM2 签名验签时,我们并不想通过调用 OpenSSL 的 EVP 接口来实现,调用 EVP 接口需要了解很多 OpenSSL 自定义的数据类型和函数。为了能在不调用 EVP 接口的情况下做 SM2 签名和验签,我针对 OpenSSL 1.1.1 版本,编程实现了以下函数:包含预处理过程的SM3杂凑值计算、SM2 密钥对生成、SM2 签名、SM2验签以及相关的测试函数。程序代码已发布在以下网址:
https://github.com/greendow/SM2-signature-creation-and-verification
- 请关注微信公众号:蛹破蝶飞 ID:zym161116
- 为您带来昨夜今晨全球要闻资讯。信息来源于央视、环球网、人民日报、中新网、新华社等正规媒体单位,分享信息来源均可追溯。
基于OpenSSL 1.1.1版实现的SM2签名与验签C程序相关推荐
- 基于mbedTLS算法库实现国密SM2签名和验签算法
网上有大量的基于OpenSSL实现的国密算法库,比如著名的GmSSL,可以直接拿来用.我自己常用的是mbedTLS的算法库,比较小巧简单,在mbedTLS的大数算法的基础上实现了国密SM2的签名和验签 ...
- php pfx加密,php基于sha1withRSA算法的签名和验签(pfx证书)
在和第三方支付接口对接时经常会对数据进行签名和验签,sha1WithRSA也算是比较常用的一种签名加密算法.php开启openssl库后实现起来也算比较简单. 我在这里使用sha1withRSA算法来 ...
- asp版 vbscript RSA公钥加密 / 私钥解密 / 私钥签名 / 公钥验签(支持中文)分段加密解密
最近有空在把自己的asp站点后端函数全部整理了下,在弄RSA的时候遇到了坑了,然后找到下面这位兄弟刚好发布的文章: https://blog.csdn.net/todaygods/article/de ...
- 使用 openssl 对文件签名和验签
这里介绍:文件签名和验签做了什么,openssl 命令行工具进行签名和验签. 文件签名和验签 签名 有文件 test.txt,使用摘要算法(如 SHA256)计算出文件的摘要,再使用私钥(privat ...
- C++ 使用OpenSSL 基于SHA1摘要的RSA签名及验签 与Java平台互通
文章目录 准备 C++ Java RSASignature.java RSAEncrypt.java Base64.java 准备 配置OpenSSL环境 配置VS2015环境 生成公私秘钥 然后你们 ...
- php signature解密,openssl RSA非对称加密、解密、签名、验签
需要先了解的openssl系列函数 openssl_pkey_get_private 从证书中解析获取私钥,以供使用.成功,返回真实的密钥资源标识符(Resource ID),否则返回false op ...
- 【OP-TEE】 TA的签名与验签 基于optee 3.11
TA的签名 以optee-os 3.11版本为例.在optee_os目录下,存放着签名的私钥和签名脚本. 工程目录/optee_os/keys/default_ta.pem 工程目录/optee_os ...
- JAVA/PHP/C#版RSA验签--转
本文是上一篇文章的兄弟篇,上篇文章介绍了客户端的sdk中如何基于JAVA/PHP/C#使用RSA私钥签名,然后服务端基于JAVA使用RSA公钥验签,客户端签名/服务端验签的模式只能帮助服务端检查客户端 ...
- php pkcs7签名验签算法,OpenSSL 签名验签接口调用及测试
OpenSSL 签名验签接口调用及测试 概述 项目中我们经常会遇到开发签名.验签功能.签名.验签是可信赖网络的一个重要功能.因此,我记录了OpenSSL 签名验签接口调用及测试. 相关测试代码 bas ...
最新文章
- php经典100例,php趣味100例 - php天平称物
- php建立数据库操作类,PHP数据库操作类的定义及使用
- Iphone是革了传统互联网的命
- QMainWindow多线程demo
- Python高效率遍历文件夹寻找重复文件
- mybatis注解动态sql_超全MyBatis动态SQL详解
- XE Delphi 判断字符为中文的方法
- mysql-mmm高可用架构
- React 18 RC 版本发布啦,生产环境用起来!
- Android IOS WebRTC 音视频开发总结(二六)-- webrtc调用堆栈
- python dataframe遍历_在pandas中遍历DataFrame行的实现方法
- Centos网络管理(五)-Bonding、网络组和网桥
- ListView的item监听事件,并且把值传递给另一个activity
- 使用jmeter快速生成测试报告
- aria2+RPC+m3u8下载工具(windows版)
- 关于iReport中纸张的大小 换算
- 为什么会“道可道非常道,名可名非常名”?
- 并行与分布式计算导论(七)MPI Collective Communication
- 判断字符串是中文或者英文
- 【2015盘点】这些手游如何“霸榜”
热门文章
- 【NI Multisim 14.0操作实例——最小系统电路】
- LateX 全文(局部)字体大小设置
- 多页面分页打印功能实现
- 【RabbitMQ】什么是RabbitMQ?RabbitMQ有什么用?应用场景有那些?
- 《让子弹飞》系列——小六子之死
- 【RAP】CAS PIA 快速浏览入口地址
- 鸿蒙系统是开放系统还是封闭系统,鸿蒙系统三挑战:应用如何兼容,生态怎么搭建,开放还是闭合...
- python工作流引擎_工作流,活动图和Python协程(一)
- java连接 mdx,olap4j连接sap hana的xmla服务mdx查询报错【已解决】
- Nginx笔记(一)Nginx