当前位置: 首页 > news >正文

南京前十外贸公司自助建站seo

南京前十外贸公司,自助建站seo,查域名的网址,微小店适合卖做分类网站吗如何检查pdf的签名 首先这里有一个已经签名的pdf文件&#xff0c;通过pdf软件可以看到文件的数字签名。 图1为签名后的文件&#xff0c;图2为签名后文件被篡改。 下面就是如何代码检查这里pdf文件的签名 1.引入依赖 <dependency><groupId>org.projectlombok<…

如何检查pdf的签名

首先这里有一个已经签名的pdf文件,通过pdf软件可以看到文件的数字签名。
图1为签名后的文件,图2为签名后文件被篡改。
在这里插入图片描述
在这里插入图片描述

下面就是如何代码检查这里pdf文件的签名
1.引入依赖

 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.3</version></dependency><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version></dependency><dependency><groupId>org.bouncycastle</groupId><artifactId>bcpkix-jdk15on</artifactId><version>1.70</version></dependency>
  1. 编写检查签名的方法
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.security.PdfPKCS7;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.Principal;
import java.security.Provider;
import java.security.Security;
import java.security.cert.X509Certificate;
import java.util.Calendar;
import java.util.List;/*** pdf文件签名检查*/
public class PdfDigitalSignatureCheck {private static final Logger LOGGER = LoggerFactory.getLogger(PdfDigitalSignatureCheck.class);public static final boolean verifySignature(PdfReader pdfReader)throws GeneralSecurityException, IOException {boolean valid = false;AcroFields acroFields = pdfReader.getAcroFields();List<String> signatureNames = acroFields.getSignatureNames();if (!signatureNames.isEmpty()) {for (String name : signatureNames) {if (acroFields.signatureCoversWholeDocument(name)) {//设定签名提供者Provider provider=Security.getProvider(BouncyCastleProvider.PROVIDER_NAME);if(provider==null){provider=new BouncyCastleProvider();Security.addProvider(provider);}PdfPKCS7 pkcs7 = acroFields.verifySignature(name);valid = pkcs7.verify();String reason = pkcs7.getReason();Calendar signedAt = pkcs7.getSignDate();X509Certificate signingCertificate = pkcs7.getSigningCertificate();Principal issuerDN = signingCertificate.getIssuerDN();Principal subjectDN = signingCertificate.getSubjectDN();LOGGER.info("valid = {}, date = {}, reason = '{}', issuer = '{}', subject = '{}'",valid, signedAt.getTime(), reason, issuerDN, subjectDN);break;}}}return valid;}/*** 验证签名** @param name* @return* @throws IOException* @throws GeneralSecurityException*/public static boolean validate(String name)throws IOException, GeneralSecurityException {PdfReader reader = new PdfReader(name);boolean isSign = verifySignature(reader);return isSign;}}
  1. 编写测试用例,并执行,可以看到数字证书相关信息。

如果有多个签名,则会显示多个签名

    @Testvoid pdfDigitalSignatureCheck() throws IOException, GeneralSecurityException {System.out.println("-----------数字签名检查------------");String[] files = {"D:\\test3\\test1_sign.pdf", "D:\\test3\\test1.pdf","D:\\test3\\test1_sign_wrapper.pdf"};for (String file : files) {boolean validate = PdfDigitalSignatureCheck.validate(file);log.info("{} 是否签名:{}", file, validate);}}

在这里插入图片描述

备注: test1_sign.pdf 为已签名文件,test1.pdf为原始未签名文件,test1_sign_wrapper.pdf为签名后更改过的文件(模拟签名后文件被篡改)

遇到的问题

签名设定

如果你的签入使用的BouncyCastleProvider,那么你的签名检查也应该使用BouncyCastleProvider,否则可能会报错。

http://www.ds6.com.cn/news/13541.html

相关文章:

  • 如何找一家靠谱的网站建设公司无锡谷歌推广
  • 安阳做一个网站多少钱如何做关键词优化
  • 深圳市营销型网站百度广告联盟app下载官网
  • wordpress缓存机制企业seo排名外包
  • 物流网站公司嵌入式培训班一般多少钱
  • 个人建设网站程序免费直链平台
  • 上海社保网站哪里做转入做网页设计的软件
  • 深圳建站的公司b站视频推广的方法有哪些
  • 影楼微网站建设百度搜索引擎优化的方法
  • 工业品一站式采购平台网站seo 优化
  • 怎么做游戏自动充值的网站网站seo博客
  • 在网上做试卷的网站谈谈对seo的理解
  • 做行程的网站 哪个最好搜狗站长平台
  • 做网站用c 还是php今天全国疫情最新消息
  • 自己建网站卖鞋站长工具seo源码
  • 小规模公司做网站成本是什么淘宝seo对什么内容优化
  • 怎么推广外贸网站泉州seo外包
  • 惠州 网站建设深圳网站建设公司排名
  • 古典网站源码专业地推团队
  • 18网站推广百度站长工具平台
  • 免费做简单网站介绍网络营销的短文
  • 沧县网站制作价格快手seo
  • 怎么查网站的关键词求职seo
  • 专做品牌的网站百度seo白皮书
  • java做网站pdfseo搜索引擎优化兴盛优选
  • wordpress密码对的登不不了昆明seo排名外包
  • 比较多人用什么网站做推广济南新闻头条最新事件
  • 网站cdn加速怎么入侵河北网络科技有限公司
  • 品牌型网站建设哪网站源码建站
  • 网站域名注册时间seo优化培训班