国密算法SM2签名、SM2验证签名示例(二)

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

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

SM2模式,和示例一中的ASN1是有区别的。同样的公私钥,签名值不一样。如.NET和JAVA对接时会出现。

SM2公钥(长度88):

BEdX9*****uXRXwNtHz47DJO0Th4PJLLWqsnqXjK5v6wGyPyDL6FeXAD2+hK/fWyp9K+b8AVk+sc94g/6gyR6j4=

SM2私钥(长度44):

ASwcX*****y2hZYC+5DZ6jCRpNg6R0bFtOJD6J+WyJk=

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

SM2签名值(长度96):

MEQCIDE2eEs50WmWkcG49MXq3UyEpbPj0xW9rbc3SZ+bd++sAiA4761FXv1ATiIn/S8liwucnYq3Zbn7+mPbb8YXQ7/3+A==

下载地址:国密SM4加解密SM2签名验签COM组件DLL.rar_delphi7sm4-其它文档类资源-CSDN下载

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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、付费专栏及课程。

余额充值