java pdf验签_java pdf验签

这篇博客主要介绍了在Java环境中如何进行PDF签名的验证,包括处理PDF文档的签名验证过程和相关工具的使用。内容涉及PDF签名的原理、Java PDF库的使用以及实际操作示例。
摘要由CSDN通过智能技术生成

java pdf验签

[2021-02-09 19:35:21]  简介:

452774.html

php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐:《PHP视频教

d119fab843d2a9cb7136d01e261dc96c.gif

出于某些需求需要将一张简单的图片转换为PDF的文件格式,因此自己动手写了一个图片转换PDF的系统,现在将该系统分享在这里,供大家参考。(学习视频推荐:java课程)具体代码:引入依赖:

d119fab843d2a9cb7136d01e261dc96c.gif

建站服务器

Gscan2pdf 2.5.5发布了,Gscan2pdf是用于从扫描文档生成PDF/DjVu的GTK工具,近日发布了bug修复,一些改进和更新的翻译。

d119fab843d2a9cb7136d01e261dc96c.gif

中国网科技7月24日讯 今日,工信部发布今年第三批侵害用户权益行为的APP通报。通报称,截至目前,尚有58款APP未完成整改。对于出现问题的APP,应在7月30日前完成整改落

d119fab843d2a9cb7136d01e261dc96c.gif

php office转pdf的方法:首先打开“php.ini”文件;然后开启dcom扩展;接着配置office组件服务;最后运行将office文件转化为pdf的代码文件即可。推荐:《PHP视频教程》将office文件转

d119fab843d2a9cb7136d01e261dc96c.gif

php实现doc转pdf的方法:首先引入autoload文件;然后通过“$templateProcessor->saveAs('test.docx');”加载模板的word文件;最后将“test.docx”转换成“test.pdf”即可

d119fab843d2a9cb7136d01e261dc96c.gif

linux下php word转pdf的方法:首先安装openoffice;然后进入RPMS目录,执行命令“rpm –ivh *rpm”;接着选择安装相关的套件,并启动OpenOffice;最后通过jodconverter方法实现转换即可

d119fab843d2a9cb7136d01e261dc96c.gif

缩小pdf文件大小的方法:首先打开迅捷PDF转换器,点击【PDF操作】;然后选择【PDF压缩】,添加需要压缩的文件;最后设置压缩等级和清晰度,点击【开始转换】即可。缩小pdf文件大小的方

d119fab843d2a9cb7136d01e261dc96c.gif

云计算

作者:kelvinjin2009 来源:程序师

原文链接:

http://www.techug.com/post/java-and-docker-memory-limits.html

Ja

d119fab843d2a9cb7136d01e261dc96c.gif

php pdf转swf的方法:首先安装swftools;然后下载中文支持及字体库;接着在项目中上传pdf文件到服务器的方法中;最后执行文件转换的代码即可。推荐:《PHP视频教程》PHP将pdf文件转换

d119fab843d2a9cb7136d01e261dc96c.gif

服务器

tomcat介绍:

web服务器只能完成静态资源的请求;

web容器能够进行动态资源的请求;

tomcat就是一个最简单的web容器,是apache的j

d119fab843d2a9cb7136d01e261dc96c.gif

PDF能不能转换成Word文档?PDF能转换成Word文档,转换方法:首先打开转换工具,选择【PDF转Word】功能;然后添加目标PDF文件到工具中;最后点击【开始转换】即可在原文件夹中找到转换完

d119fab843d2a9cb7136d01e261dc96c.gif

php实现pdf转换成图片的方法:首先安装好“GhostScript”;然后使用imagick把PDF转成图片即可。推荐:《PHP视频教程》PHP中使用imagick实现把PDF转成图片PHP Manual里,对imagick的

d119fab843d2a9cb7136d01e261dc96c.gif

电脑打开PDF需要什么软件?电脑打开PDF需要软件WPS,WPS是一款办公软件套装,可以实现办公软件最常用的文字、表格、演示,PDF阅读等多种功能,具有内存占用低、运行速度快、云功能多

d119fab843d2a9cb7136d01e261dc96c.gif

php中ppt转pdf的方法:首先配置组件服务,并在后台运行OpenOffice软件;然后配置PHP扩展,并实现文件转换;最后查看PDF文档即可。php中ppt转pdf的方法:1. 配置组件服务OpenOffice 安装

d119fab843d2a9cb7136d01e261dc96c.gif

您好,您的问题似乎有些不明确。您是想了解如何在 Java 或 Go 中使用国密 SM2 算法进行签名和验签,或是想了解如何进行 P7 格式的签名和验签吗?以下是两个问题的回答: 1. 如何在 Java 或 Go 中使用国密 SM2 算法进行签名和验签? 在 Java 中使用国密 SM2 算法进行签名和验签,您可以使用 BouncyCastle 库。具体实现可以参考下面的代码: Java: ```java // 加载 BouncyCastle Provider Security.addProvider(new BouncyCastleProvider()); // 生成密钥对 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(); // 签名 Signature signature = Signature.getInstance("SM3withSM2", "BC"); signature.initSign(privateKey); signature.update(data); byte[] signatureBytes = signature.sign(); // 验签 signature.initVerify(publicKey); signature.update(data); boolean verifyResult = signature.verify(signatureBytes); ``` Go: ```go // 生成密钥对 privateKey, err := sm2.GenerateKey() if err != nil { log.Fatal(err) } publicKey := &privateKey.PublicKey // 签名 hash := sm3.SumSM3(data) signature, err := privateKey.Sign(rand.Reader, hash[:], nil) if err != nil { log.Fatal(err) } // 验签 verifyResult := publicKey.Verify(hash[:], signature) ``` 2. 如何进行 P7 格式的签名和验签? 在 Java 中进行 P7 格式的签名和验签,您可以使用 BouncyCastle 库。具体实现可以参考下面的代码: Java: ```java // 加载 BouncyCastle Provider Security.addProvider(new BouncyCastleProvider()); // 读取证书和私钥 KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(new FileInputStream("keystore.p12"), "password".toCharArray()); PrivateKey privateKey = (PrivateKey) keyStore.getKey("alias", "password".toCharArray()); Certificate[] certChain = keyStore.getCertificateChain("alias"); X509Certificate cert = (X509Certificate) certChain[0]; // 加载证书链 JcaCertStore jcaCertStore = new JcaCertStore(Arrays.asList(certChain)); // 签名 ContentSigner signer = new JcaContentSignerBuilder("SM3withSM2").setProvider("BC").build(privateKey); CMSTypedData cmsData = new CMSProcessableByteArray(data); CMSSignedDataGenerator generator = new CMSSignedDataGenerator(); generator.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().build()).build(signer, cert)); generator.addCertificates(jcaCertStore); CMSSignedData signedData = generator.generate(cmsData, true); byte[] signedBytes = signedData.getEncoded(); // 验签 CMSSignedData cms = new CMSSignedData(signedBytes); SignerInformationStore signers = cms.getSignerInfos(); Collection<SignerInformation> c = signers.getSigners(); Iterator<SignerInformation> it = c.iterator(); if (it.hasNext()) { SignerInformation signer = it.next(); X509CertificateHolder certHolder = (X509CertificateHolder) cms.getCertificates().getMatches(signer.getSID()).iterator().next(); if (signer.verify(new JcaSimpleSignerInfoVerifierBuilder().build(certHolder))) { return true; } } return false; ``` Go: ```go // 读取证书和私钥 pemData, err := ioutil.ReadFile("keystore.pem") if err != nil { log.Fatal(err) } blocks := pem.Decode(pemData) key, err := x509.ParsePKCS8PrivateKey(blocks.Bytes) if err != nil { log.Fatal(err) } certData, err := ioutil.ReadFile("cert.pem") if err != nil { log.Fatal(err) } cert, err := x509.ParseCertificate(certData) if err != nil { log.Fatal(err) } // 加载证书链 certs := []*x509.Certificate{cert} intermediateData, err := ioutil.ReadFile("intermediate.pem") if err == nil { for { blocks := pem.Decode(intermediateData) if blocks == nil { break } intermediateCert, err := x509.ParseCertificate(blocks.Bytes) if err != nil { log.Fatal(err) } certs = append(certs, intermediateCert) } } // 签名 hash := sm3.SumSM3(data) signedData, err := cms.NewSignedData(hash[:], key, cert, certs...) if err != nil { log.Fatal(err) } signedBytes, err := signedData.ToDER() if err != nil { log.Fatal(err) } // 验签 cms, err := cms.ParseCMS(signedBytes) if err != nil { log.Fatal(err) } signerInfos := cms.GetSignerInfos() for _, signerInfo := range signerInfos { err = signerInfo.Verify(cert) if err == nil { return true } } return false ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值