# api-show-sys **Repository Path**: joo2019/api-show-sys ## Basic Information - **Project Name**: api-show-sys - **Description**: 知录API信息平台后端,其中包含了RSA,SM2的签名验签,以及pdf,ofd的盖章,个人以及企业用印生成。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-08-20 - **Last Updated**: 2025-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 准备工作: 项目运行起来需要将resources中的 word.jar包引入项目中 ,这个包主要功能是word转pdf 证书生成: sm2证书:com.zhonglz.util.cert.CertUtils.java里面有个main方法 修改一下相对应数据信息就好了 rsa证书:com.zhonglz.util.cert.rsa.RSAUtils.java里面有个main方法 修改一下相对应数据信息就好了 印章生成: com.zhonglz.util.SealUtils.java里面有个main方法 修改一下相对应数据信息就好了 具体测试方法在com.zhonglz.util.sign目录下的 pdf包里面, 有测试类: SignRSAPdf.java SignSM2Pdf.java 以及 ExternalSignPdf.java测试类实现了分离式签名盖章 验签的阅读器可在福昕上验签:https://foxit.pdf365.cn/ 这里没有直接引入itext7的sign包,而是将itext7中的源码包sign里面的所有文件 复制到了当前项目的com.zhonglz.itext7Sign目录下 然后修改部分国密SM2证书给pdf盖章处理,项目中的盖章直接用本地的方法就好了 基于BouncyCastle JAR包+itextpdf 利用itext提供的2个签名接口: ExternalDigest 及 ExternalSignature, 修改BC部份代码实现国密SM2签名处理。 具体处理如下: 1、BouncyCastleDigest.java 增加 if(("1.2.156.10197.1.401").equals(oid)){ return new org.bouncycastle.jcajce.provider.digest.SM3.Digest(); } 2、DigestAlgorithms.java 增加 DIGEST_NAMES.put("1.2.156.10197.1.401",“SM3”); ALLOWED_DIGESTS.put("SM3","1.2.156.10197.1.401"); EncryptionAlgorithms.java 增加 ALGORITHM_NAMES.put("1.2.156.10197.1.501","SM2"); PrivateKeySignature.java 中 sign(byte[] b) 方法增加 if("SM3".equalsIgnoreCase(this.hashAlgorithm)){ signMode = "SM3withSM2"; } PdfPKCS7.java 中 setExternalDigest(...) 方法中 将 ECDSA 条件下的赋值改为 this.digestEncryptionAlgorithmOid = "1.2.156.10197.1.501";