国密SM2电子签章JAVA实现

        本文默认所需的国密SM2证书已生成完成。基于BouncyCastle JAR包+itextpdf,利用itext提供的2个签名接口:ExternalDigest 及 ExternalSignature,修改BC部份代码实现国密SM2签名处理。具体处理如下:

1、pom.xml 引入 itextpdf 5.5.6 + bouncycastle jdk15on-1.60或以上版本

2、BouncyCastleDigest.java 增加

if(("1.2.156.10197.1.401").equals(oid)){

return new org.bouncycastle.jcajce.provider.digest.SM3.Digest();

}

3. DigestAlgorithms.java 增加

DIGEST_NAMES.put("1.2.156.10197.1.401",“SM3”);

ALLOWED_DIGESTS.put("SM3","1.2.156.10197.1.401");

4. EncryptionAlgorithms.java 增加

ALGORITHM_NAMES.put("1.2.156.10197.1.501","SM2");

5. PrivateKeySignature.java 中 sign(byte[] b) 方法增加

if("SM3".equalsIgnoreCase(this.hashAlgorithm)){

signMode = "SM3withSM2";

}

6. PdfPKCS7.java 中 setExternalDigest(...) 方法中 将 ECDSA 条件下的赋值改为

this.digestEncryptionAlgorithmOid = "1.2.156.10197.1.501";

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值