如何使用 GroupDocs.Signature 在 Java 中实现带有二维码加密的安全 PDF 签名
在当今的数字时代,保护文档中的敏感信息至关重要。网络威胁的兴起使得数据加密成为文档管理的重要组成部分。本教程将指导您使用 GroupDocs.Signature for Java 实现安全的 PDF 签名,并使用二维码加密。学完本文后,您将能够将强大的安全功能集成到您的应用程序中。
您将学到什么:
- 理解 Java 中的对称数据加密
- 创建自定义签名类
- 使用自定义数据和对齐方式配置二维码签名
- 集成 GroupDocs.Signature 实现安全的 PDF 签名
准备好了吗?让我们开始吧!
先决条件
在开始之前,请确保您具备以下条件:
- Java 开发工具包 (JDK): 版本 8 或更高版本。
- Maven 或 Gradle: 用于依赖管理。请根据您的项目设置进行选择。
- Java编程知识: 对 Java 面向对象编程有基本的了解。
为 Java 设置 GroupDocs.Signature
要开始使用 GroupDocs.Signature,您需要将其添加为项目的依赖项。该库提供了用于管理数字签名和文档加密的强大工具。
Maven 设置
将以下依赖项添加到您的 pom.xml
文件:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle 设置
对于 Gradle 用户,将其包含在您的 build.gradle
文件:
implementation 'com.groupdocs:groupdocs-signature:23.12'
直接下载
或者,从下载最新版本 GroupDocs.Signature Java 版本.
许可证获取
您可以先免费试用 GroupDocs.Signature 来评估其功能。如需长期使用,请考虑购买许可证或通过其网站申请临时许可证。
实施指南
本指南分为几个主要部分,涵盖数据加密、自定义签名创建和二维码签名配置。
对称算法数据加密
加密数据可确保其在传输和存储过程中的安全。以下是使用 GroupDocs.Signature 设置对称加密的方法:
设置对称加密
- 导入必要的包:
import com.groupdocs.signature.domain.extensions.encryption.IDataEncryption; import com.groupdocs.signature.domain.extensions.encryption.SymmetricAlgorithmType; import com.groupdocs.signature.domain.extensions.encryption.SymmetricEncryption;
- 初始化加密对象:
使用安全密钥和盐进行加密。替换
"YOUR_SECURE_KEY"
使用您自己的钥匙。String key = "YOUR_SECURE_KEY"; String salt = "YOUR_SECURE_SALT"; IDataEncryption encryption = new SymmetricEncryption( SymmetricAlgorithmType.Rijndael, key, salt );
- 对称算法类型.Rijndael: 这指定了要使用的对称算法的类型。
- 密钥和盐: 确保这些对于您的应用程序来说是唯一的和安全的。
自定义数据签名类
创建自定义类可以让你有效地管理签名属性。具体方法如下:
定义 DocumentSignatureData
班级
class DocumentSignatureData {
private String ID;
private String Author;
private Date Signed = new Date();
private BigDecimal DataFactor = new BigDecimal(0.01);
public String getID() { return ID; }
public void setID(String value) { ID = value; }
public final String getAuthor() { return Author; }
public final void setAuthor(String value) { Author = value; }
public final Date getSigned() { return Signed; }
public final void setSigned(Date value) { Signed = value; }
public final BigDecimal getDataFactor() { return DataFactor; }
public final void setDataFactor(BigDecimal value) { DataFactor = value; }
}
- ID、作者、签名: 这些字段存储签名的元数据。
- 数据因素: 保存与应用程序逻辑相关的数值。
QR码签名选项
二维码提供了一种紧凑的信息嵌入方式。您可以使用自定义数据和加密方式进行配置:
设置二维码签名
- 初始化
Signature
目的:import com.groupdocs.signature.Signature; Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY");
- 配置二维码选项:
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes; import com.groupdocs.signature.options.sign.QrCodeSignOptions; import java.util.UUID; DocumentSignatureData documentSignature = new DocumentSignatureData(); documentSignature.setID(UUID.randomUUID().toString()); documentSignature.setAuthor(System.getenv("USERNAME")); documentSignature.setDataFactor(new BigDecimal("11.22")); QrCodeSignOptions options = new QrCodeSignOptions(); options.setData(documentSignature); options.setEncodeType(QrCodeTypes.QR); options.setDataEncryption(encryption); // 使用加密对象 options.setHeight(100); options.setWidth(100); options.setVerticalAlignment(com.groupdocs.signature.domain.enums.VerticalAlignment.Bottom); options.setHorizontalAlignment(com.groupdocs.signature.domain.enums.HorizontalAlignment.Right); import com.groupdocs.signature.domain.Padding; Padding padding = new Padding(); padding.setRight(10); padding.setBottom(10); options.setMargin(padding);
- 编码类型: 指定二维码格式。
- 对齐和边距: 自定义二维码在文档上的显示方式。
示例用法
要使用您配置的选项签署文档:
signature.sign("YOUR_OUTPUT_DIRECTORY/QRCodeEncryptedObject.pdf\