java如何对pdf文件实现数字签名

java如何对pdf文件实现数字签名,第1张

用SpireDoc  for Java 可以添加及验证数字签名,参考代码:

import comspirepdf;

 import comspirepdfgraphicsPdfImage;

 import comspirepdfgraphicsPdfTrueTypeFont;

 import comspirepdfsecurityGraphicMode;

 import comspirepdfsecurityPdfCertificate;

 import comspirepdfsecurityPdfCertificationFlags;

 import comspirepdfsecurityPdfSignature;

 

 import javaawt;

 import javaawtgeomPoint2D;

 import javaawtgeomRectangle2D;

 

 public class AddCertificate {

     public static void main(String[]args){

         //加载PDF文档

         PdfDocument doc = new PdfDocument();

         docloadFromFile("testpdf");

 

         //加载pfx证书,及证书秘钥

         PdfCertificate cert = new PdfCertificate("Cermiapfx","123654yes!");

 

         //添加数字签名到指定页面,并设置其位置和大小

         PdfSignature signature = new PdfSignature(doc, docgetPages()get(2), cert, "MySignature");

         Rectangle2D rect = new Rectangle2DFloat();

         rectsetFrame(new Point2DFloat((float) docgetPages()get(0)getActualSize()getWidth() - 340, (float) docgetPages()get(0)getActualSize()getHeight() - 230), new Dimension(280, 150));

         signaturesetBounds(rect);

 

         //设置签名为加文本模式

         signaturesetGraphicMode(GraphicModeSign_Image_And_Sign_Detail);

 

         //设置签名的内容

         signaturesetNameLabel("签字者:");

         signaturesetName("Mia");

         signaturesetContactInfoLabel("联系电话:");

         signaturesetContactInfo("02881705109");

         signaturesetDateLabel("日期:");

         signaturesetDate(new javautilDate());

         signaturesetLocationInfoLabel("地点:");

         signaturesetLocationInfo("成都");

         signaturesetReasonLabel("原因:");

         signaturesetReason("文档所有者");

         signaturesetDistinguishedNameLabel("DN: ");

         signaturesetDistinguishedName(signaturegetCertificate()get_IssuerName()getName());

         signaturesetSignImageSource(PdfImagefromFile("signpng"));

 

         //设置签名的字体

         signaturesetSignDetailsFont(new PdfTrueTypeFont(new Font("Arial Unicode MS", FontPLAIN, 9)));

 

         //设置文档权限为禁止更改

         signaturesetDocumentPermissions(PdfCertificationFlagsForbid_Changes);

         signaturesetCertificated(true);

 

         //保存文档

         docsaveToFile("AddSignaturepdf");

         docclose();

     }

 }

数字签名添加效果:

数字签名效果

参考原文

sign就是签名,是你提交的数据经过一定规则组和后用md5加密的一个东西(官方文档有介绍)。是用来验证数据是否被第三方篡改的一个凭证。你发送到微信服务器,微信服务器会用你发来的参数生成sign。再和你传过去的sign做对比。这就是签名验证。一样的微信返回给你的数据你也要做一个签名验证。来查看是否被第三篡改。如果被篡改了,那么其实数据就是无效的。望采纳

执行完此步后,目录下出现mystorestore文件,为密钥库,此密钥库别名为mystore。三:c:\zzz\SignedAppletDemokeytool -export -keystore mystorestore -alias mystore -file mycertcer执行完此步后,目录下出现mycertcer文件,就是一张证书四:c:\zzz\SignedAppletDemojarsigner -keystore mystorestore myappletjar mystore此步骤是对密钥库签名然后把myappletjar,mystorestore,mycertcer复制到用户目录下。以上是服务器所做步骤以下是客户机所做步骤五:c:\zzz\SignedAppletDemokeytool -import -keystore clientstore -alias mystore -file mycertcer用户同意接收该证书,信任该证书颁发者的所有作品,也就是把收到的证书导入本地密钥库。六:修改用户的policy文件,文件名为javapolicy放在用户主目录下。七:对接收的文件进行验证C:\zzz\SignedAppletDemojarsigner -verify -verbose -keystore mystorestore myappletjarjar verified八:打开接收文件那么用户就得到所有被签名的文件。九:在用户端把生成的证书导入,即安装证书。

JAVA_HOME C:\Program Files\Java\jdk160_12

CLASSPATH \;%JAVA_HOME%\lib\toolsjar

配置的话网上有的,你参考网上的Android配置,签名工具没有必要吧!用Android里面的自己设置就可以了,在eclipse里面有接口,没有必要另外用签名工具。方便多了

一般接口为了安全需要,都会这么做。可能你的思路还不明确。我的做法是这样的,双方约定好,参数按特定顺序排列,比如按首字母的顺序排列,如url:>

以上就是关于java如何对pdf文件实现数字签名全部的内容,包括:java如何对pdf文件实现数字签名、java 微信支付统一下单请求参数和成功返回结果中的sign有什么关系、(高分)java的签名命令keytool与jarsigner的区别怎样使用(急等)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10136327.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存