
用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的区别怎样使用(急等)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)