如何设置ENCRYPTION_AES_128? - Java 的 iText 7.1.0
How to set ENCRYPTION_AES_128? - iText 7.1.0 for Java
目前我正在用 iText 编写几个评估程序。
我遇到 AES 加密问题。
STANDARD_ENCRYPTION_128 工作正常,但 ENCRYPTION_AES_128 产生运行时错误。
我尝试了很多,但没有任何效果。有人知道这里出了什么问题吗?
谢谢,德克
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import com.itextpdf.kernel.pdf.EncryptionConstants;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.WriterProperties;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
public class problem3 {
public static void main(String[] args) throws IOException {
String fnPdf = "results/problem3.pdf";
WriterProperties properties = new WriterProperties();
// ENCRYPTION_AES_128 produces an runtime error, STANDARD_ENCRYPTION_128 is working.
properties.setStandardEncryption("Hello".getBytes(), "World".getBytes(), EncryptionConstants.ALLOW_PRINTING,
EncryptionConstants.ENCRYPTION_AES_128);
PdfWriter writer = new PdfWriter(fnPdf, properties);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
Paragraph paragraph = new Paragraph("Hello AES-128!");
document.add(paragraph);
document.close();
pdf.close();
Desktop.getDesktop().open(new File(fnPdf));
}
}
你在运行时的错误可能是
java.lang.NoClassDefFoundError: org/bouncycastle/crypto/BlockCipher
这是因为 iText 使用 BouncyCastle 库来提供一些加密功能。该依赖项是可选的,这意味着您必须在需要时手动添加它。
如果您使用 Maven 进行构建,请确保您具有以下依赖项:
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.49</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
</dependency>
如果您手动将 jar 添加到类路径(不推荐这样做),那么您可以转到 Maven Central 并手动下载必要的工件 jar。
目前我正在用 iText 编写几个评估程序。
我遇到 AES 加密问题。
STANDARD_ENCRYPTION_128 工作正常,但 ENCRYPTION_AES_128 产生运行时错误。
我尝试了很多,但没有任何效果。有人知道这里出了什么问题吗?
谢谢,德克
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import com.itextpdf.kernel.pdf.EncryptionConstants;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.WriterProperties;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
public class problem3 {
public static void main(String[] args) throws IOException {
String fnPdf = "results/problem3.pdf";
WriterProperties properties = new WriterProperties();
// ENCRYPTION_AES_128 produces an runtime error, STANDARD_ENCRYPTION_128 is working.
properties.setStandardEncryption("Hello".getBytes(), "World".getBytes(), EncryptionConstants.ALLOW_PRINTING,
EncryptionConstants.ENCRYPTION_AES_128);
PdfWriter writer = new PdfWriter(fnPdf, properties);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
Paragraph paragraph = new Paragraph("Hello AES-128!");
document.add(paragraph);
document.close();
pdf.close();
Desktop.getDesktop().open(new File(fnPdf));
}
}
你在运行时的错误可能是
java.lang.NoClassDefFoundError: org/bouncycastle/crypto/BlockCipher
这是因为 iText 使用 BouncyCastle 库来提供一些加密功能。该依赖项是可选的,这意味着您必须在需要时手动添加它。
如果您使用 Maven 进行构建,请确保您具有以下依赖项:
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.49</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
</dependency>
如果您手动将 jar 添加到类路径(不推荐这样做),那么您可以转到 Maven Central 并手动下载必要的工件 jar。