php sm2 sm4加解密_国密算法SM2加解密_签名验签图形化例子

本文介绍了国密SM2非对称加密算法,包括其与SM4的区别、公钥私钥的概念以及签名验签的过程。通过Qt示例展示了SM2的使用,涉及到的接口包括SM3哈希、随机数生成、签名验证等。强调了理解加密流程和安全性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

e801de24dc1eb5cce15b27ce56f84e7f.png

国密SM2概述

对国密算法有了解的朋友看到SM2可能会先想到非对称加密,之前的SM4是对称加密。SM4加解密使用的是同一个秘钥,而SM2使用的是非对称加密——公钥和私钥。公钥加密私钥解密。将密钥对中的私钥自己留存,在发送的消息中携带公钥;私钥32位、公钥64位,公钥前32字节称为X、后32字节称为Y,公钥存储方式分为压缩和非压缩。

签名和验签

主要为了防止消息被篡改,使用到了SM3。关于签名和验签,可以搜索更多的说明,加深理解。

使用Qt写的例子

91f25ffa2c79700dc24daa5ec1b9da78.png

从上到下依次是私钥、公钥、明文、密文。

由于使用的国密算法是用C语言写的,所以需要和Qt所使用的类型做一些转换。

下面列一些使用到的接口:

①create hash dgst

SM3_Hash()

②create random

sdt_random_gen()

③ecc sign

sdt_ecc_sign()

④ecc verify

sdt_ecc_verify()

⑤ecc encrypt

sdt_ecc_encrypt()

⑥ecc decrypt

sdt_ecc_decrypt()

使用的是别人写好的程序,主要是熟悉一些流程。

多思考、多总结。

今天就说到这里吧。

具体的程序可在公众号后台留言获取。

提供给第三方软件,调用COM组件DLL方式进行实现,如delphi、PB等。调用方法与黑龙江省医保社保卡调用方式一致。各软件调用方法也可自行网上查询,如“delphi调用C#的COM组件DLL”。 基于C#编写的COM组件DLL,可实现SM2签名SM4加解密,100%适用于黑龙江省国家医保接口中进行应用。 1、调用DLL名称:JQSM2SM4.dll 加解密类名:JQSM2SM4.SM2SM4Util CLSID=5B38DCB3-038C-4992-9FA3-1D697474FC70 2、GetSM2SM4函数说明 函数原型public string GetSM2SM4(string smType, string sM2Prikey, string sM4Key, string sInput) 1)参数一smType:填写固定字符串,识别功能,分别实现SM2签名SM4解密、SM4加密。SM2签名入参填写“SM2Sign”、SM4解密入参填写“SM4DecryptECB”、SM4加密入参填写“SM4EncryptECB”. 2)参数二sM2Prikey:SM2私钥 3)参数三sM4Key:SM4密钥 4)参数四sInput:当smType=SM2Sign,则sInput入参填写SM4加密串;当smType=SM4DecryptECB,则sInput入参填写待解密SM4密文串;当smType=SM4EncryptECB,则sInput入参填写待加密的明文串; 5)函数返回值:当smType=SM2Sign,则返回SM2签名信息;当smType=SM4DecryptECB,则返回SM4解密信息;当smType=SM4EncryptECB,则返回SM4加密信息;异常时,则返回“加解密异常:详细错误说明” 3、购买下载后,可加QQ65635204、微信feisng,免费提供技术支持。 4、注意事项: 1)基于.NET框架4.0编写,常规win7、win10一般系统都自带无需安装,XP系统则需安装;安装包详见压缩包dotNetFx40_Full_x86_x64.exe 2)C#编写的DLL,需要注册,解压后放入所需位置,使用管理员权限运行“JQSM2SM4注册COM.bat”即可注册成功,然后即可提供给第三方软件进行使用,如delphi、PB等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值