「javapdf电子签名」电子签名 java

博主:adminadmin 2023-01-22 10:06:08 337

本篇文章给大家谈谈javapdf电子签名,以及电子签名 java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 中 如何使用itextpdf生成pdf 并且设置空白的签名域

/** 新建一个字体,iText的方法

* STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀

* UniGB-UCS2-H 是编码,在iTextAsian.jar 中以cmap为后缀

* H 代表文字版式是横版,相应的 V 代表竖版

*/

BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",

"UniGB-UCS2-H", false);

Font fontChinese = new Font(bfChinese,12, Font.NORMAL, Color.GREEN)

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

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

import com.spire.pdf.*;

 import com.spire.pdf.graphics.PdfImage;

 import com.spire.pdf.graphics.PdfTrueTypeFont;

 import com.spire.pdf.security.GraphicMode;

 import com.spire.pdf.security.PdfCertificate;

 import com.spire.pdf.security.PdfCertificationFlags;

 import com.spire.pdf.security.PdfSignature;

 

 import java.awt.*;

 import java.awt.geom.Point2D;

 import java.awt.geom.Rectangle2D;

 

 public class AddCertificate {

     public static void main(String[]args){

         //加载PDF文档

         PdfDocument doc = new PdfDocument();

         doc.loadFromFile("test.pdf");

 

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

         PdfCertificate cert = new PdfCertificate("Cermia.pfx","123654yes!");

 

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

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

         Rectangle2D rect = new Rectangle2D.Float();

         rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 340, (float) doc.getPages().get(0).getActualSize().getHeight() - 230), new Dimension(280, 150));

         signature.setBounds(rect);

 

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

         signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);

 

         //设置签名的内容

         signature.setNameLabel("签字者:");

         signature.setName("Mia");

         signature.setContactInfoLabel("联系电话:");

         signature.setContactInfo("02881705109");

         signature.setDateLabel("日期:");

         signature.setDate(new java.util.Date());

         signature.setLocationInfoLabel("地点:");

         signature.setLocationInfo("成都");

         signature.setReasonLabel("原因:");

         signature.setReason("文档所有者");

         signature.setDistinguishedNameLabel("DN: ");

         signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());

         signature.setSignImageSource(PdfImage.fromFile("sign.png"));

 

         //设置签名的字体

         signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 9)));

 

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

         signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);

         signature.setCertificated(true);

 

         //保存文档

         doc.saveToFile("AddSignature.pdf");

         doc.close();

     }

 }

数字签名添加效果:

数字签名效果

参考原文

java word转pdf并定位关键字签章

建议你先把word的电子签章弄掉,转成PDF,然后再用PDF编辑器添加图章就好了。

先用福昕PDF阅读器打开文件,然后点击注释----创建自定义图章

会跳出这个框框,你把电子签章添加进去,然后类别名称写一下,图片透明度什么都可以设置,然后按确定

之后再到注释--图章里就可以找到自己刚刚创建的签章。添加就好了

电子签名用Java怎么实现

import java.security.InvalidKeyException;

import java.security.Key;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.NoSuchAlgorithmException;

import java.security.PrivateKey;

import java.security.PublicKey;

import java.security.SecureRandom;

import java.security.Signature;

import java.security.SignatureException;

import java.util.logging.Level;

import java.util.logging.Logger;

/**

 * ECDSA 160bit 签名及签名验证例子

 */

public class ECDSASignature {

    public static void main(String argv[]) {

        signatureTest();

    }

    public static void signatureTest() {

        /**

         * 密钥对生成

         */

        KeyPairGenerator keyPairGenerator = null;

        try {

            keyPairGenerator = KeyPairGenerator.getInstance("EC");

        } catch (NoSuchAlgorithmException ex) {

            return;

        }

        SecureRandom secureRandom = new SecureRandom();

        keyPairGenerator.initialize(160, secureRandom);

        KeyPair pair = keyPairGenerator.generateKeyPair();

        Key publicKey = pair.getPublic();

        Key privateKey = pair.getPrivate();

        // 字符串

        String hako = "test";

        /**

         * 私钥签名(ECDSA 160bit)

         */

        byte[] sign = null;

        try {

            Signature signatureSign = null;

            signatureSign = Signature.getInstance("NONEwithECDSA");

            signatureSign.initSign((PrivateKey) privateKey, secureRandom);

            signatureSign.update(hako.getBytes());

            sign = signatureSign.sign();

            System.out.println("sign: " + new String(sign));

        } catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException ex) {

            Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE, null, ex);

        }

        /**

         * 用公钥进行签名验证

         */

        Signature signatureVerify = null;

        try {

            signatureVerify = Signature.getInstance("NONEwithECDSA");

            signatureVerify.initVerify((PublicKey) publicKey);

            signatureVerify.update(hako.getBytes());

            boolean verifyResult = signatureVerify.verify(sign);

            System.out.println(verifyResult ? "签名OK" : "签名NG");

        } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {

            Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE, null, e);

        }

    }

}

Java PDFBox 能在PDF上添加标签吗?

应该是能加东西的,PDFBox 提供了下面的功能:

(1)文本的提取

即在PDF文件里面把文本内容提取出来。

(2) 合并和拆分PDF文档

可以把几个PDF合并成一个PDF文件,也可以把一个PDF文件拆分成多个PDF文件。

(3) 表单填充

从PDF文件的表单中提取数据或者写入数据到PDF表单中。

(4) PDF/A的校验

根据PDF/A ISO 标准校验PDF文档

(5)打印PDF

通过Java的API去打印PDF文件

(6) 把PDF转换成图片

把PDF文件转换成图片

(7) 创建PDF文件

(8) PDF签名

【第14期】springboot: pdf电子签章

上期讲述了pdf文档的操作,这期讲述对pdf进行电子签章,公司的一个小业务,主要实现 1)线上登记学员信息 》2)线上付款 》 3)电子签名 》4)生成带有公司电子签章的pdf收据

线上付款和电子签名我会在后续章节讲述,这期讲述pdf电子签章

一、申请电子印章

二、生成PKCS12证书

1. PKCS介绍

PKCS:The Public-Key Cryptography Standards (简称PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。

到1999年底,PKCS已经公布了以下标准:

PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封[22]。

PKCS#3:定义Diffie-Hellman密钥交换协议[23]。

PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5 从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息[24]。

PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式[25]。

PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息[26]。

PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等[27]。

PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型[28]。

PKCS#10:描述证书请求语法[29]。

PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备[30]。

PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法[31]。

PKCS#13:椭圆曲线密码体制标准[32]。

PKCS#14:伪随机数生成标准。

PKCS#15:密码令牌信息格式标准[33]。

PKCS12也就是以上标准的PKCS#12,主要用来描述个人身份信息

2、JAVA生成PKCS12证书并进行存贮

生成的文件keystore.cer和keystore.p12放在自己项目的配置文件中,后面调用。

三、电子签章

2. 签名工具类SignPdf

3. 然后在业务中调用即可。

关于javapdf电子签名和电子签名 java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。