国密SM2签名、SM2验证签名示例(三)

  虽然都是国密算法SM2,但是随着厂商不一样,每个厂商的使用方法不一样,导致SM2签名结果不一致,今天就给大家介绍一些示例,都是各种对接过程中的存货,会拆分成几个文章进行讲解。

为了确保安全,示例中的密钥会使用几个*号进行代替。

SM2公钥(长度130):

04383**********115EF146FF9E8D5BD9EE04A8799B4A7B49EAB39F02B6572CA8C2AF0C25EA02B77EDA895DBE5A966EC06793D65E0FE2C61778ED140BB818C95DF

SM2私钥(长度64):

E311F**********9899D01A29AEB08DCC474724CE764BBC8AD6D3E80EB4CF90D

待签名字符串:{"ecToken":"xxxxxxxxxssssssss","idNo":"340100198808089999","idType":"01","insuOrg":"010203","userName":"测试人员"}

SM2签名值(长度144):

3045022062f27e09d7b3ed8410efbc26633a3bbab59c668e28b176a6edb0a4df230b2648022100928722e9837229f39964071bf26cf5e307890e81c85b0e2d50c381e194cecd35

下载地址:国密SM4加解密SM2签名验签COM组件DLL.rar_delphi7sm4-其它文档类资源-CSDN下载提供给第三方软件,调用COM组件DLL方式进行实现,如delphi、PB等。调用方法与黑龙江省医保社delphi7sm4更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/wdsfeisng/31813059

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为你提供国密算法SM2签名验证签名示例。以下是示例代码: 签名示例(使用Java语言): ```java import org.bouncycastle.crypto.AsymmetricCipherKeyPair; import org.bouncycastle.crypto.CryptoException; import org.bouncycastle.crypto.digests.SM3Digest; import org.bouncycastle.crypto.engines.SM2Engine; import org.bouncycastle.crypto.generators.ECKeyPairGenerator; import org.bouncycastle.crypto.params.*; import org.bouncycastle.crypto.signers.SM2Signer; import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.math.BigInteger; import java.security.*; import java.security.spec.ECGenParameterSpec; public class SM2SignatureExample { public static void main(String[] args) { Security.addProvider(new BouncyCastleProvider()); try { // 生成密钥对 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "BC"); ECGenParameterSpec ecGenParameterSpec = new ECGenParameterSpec("sm2p256v1"); keyPairGenerator.initialize(ecGenParameterSpec, new SecureRandom()); KeyPair keyPair = keyPairGenerator.generateKeyPair(); // 获取私钥和公钥 PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); // 待签名的数据 byte[] data = "Hello, SM2!".getBytes(); // 执行签名操作 SM2Signer signer = new SM2Signer(); signer.init(true, new ParametersWithRandom(privateKey, new SecureRandom())); signer.update(data, 0, data.length); byte[] signature = signer.generateSignature(); System.out.println("签名值: " + new BigInteger(1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

feisng0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值