我们需要使用java将文件嵌入到pdf中,并且需要使用证书对其进行加密 几个月前我发现了一些使用(如果我没有磨损)itext 的东西,但我再也找不到它了 证书位于智能卡上
最佳答案
加密 PDF 是通过公共(public)证书完成的。一旦 PDF 被加密,只有拥有相应私有(private)证书的人才能打开 PDF。在您的场景中,这意味着只有拥有智能卡的人才能打开该文档。
首先您需要从智能卡中提取公共(public)证书。这里的主要问题是:你想用 Java 来做这个吗?如果是这样,您想使用 PKCS#11 来执行此操作吗?使用MSCAPI?使用智能卡 API?老实说,我不认为那是你想做的。我认为您希望智能卡的所有者手动提取其公共(public)证书并将其发送给您。如果这个假设是错误的,您需要发布另一个问题:如何从智能卡获取公共(public)证书。
获得此证书后,您可以像这样加密 PDF:
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
Certificate cert = getPublicCertificate("resources/encryption/public.cer");
stamper.setEncryption(new Certificate[]{cert},
new int[]{PdfWriter.ALLOW_PRINTING}, PdfWriter.ENCRYPTION_AES_128);
stamper.close();
reader.close();
公共(public)证书存储在文件public.cer
中。这是您的最终用户从智能卡中提取的文件。
如果您想单独加密附件,则必须在这些文件级别执行此操作。不清楚您是在谈论 PDF 还是其他类型的文档。
关于java - 使用java加密pdf中的嵌入附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23784155/