对具有java数字签名的PDF文件应用密码



当我从java代码向文件应用密码时,我正面临数字签名验证的问题。在我的场景中,我正在获得已经具有数字签名的文件。我想把密码放在pdf文件上,这个文件是数字签名的

我可以输入密码,但问题是现在没有验证数字签名。给我提个建议,我们怎样才能实现它。有可能吗?

如果有任何需要我澄清的地方请告诉我....

您无法在先前签名的PDF上添加密码而不破坏签名。签名检查被签名的数据作为字节流是否不变。密码会改变这些字节。因此,如果之后应用了密码,签名将失效。

你可以考虑同时签名和加密。

如果在您的情况下这是不可能的,您可以考虑将签名的PDF添加到PDF投资组合并加密该投资组合。在这种情况下,签名的PDF必须从投资组合中打开,这意味着要解密它。

PS我假设在上述所有内容中您指的是常规PDF签名,而不是XFA签名。

首先尝试将数字签名转换为字符串,然后使用这段代码

public static String passwordProtectFile(File srcFile, File destFile,
        String password) throws DocumentException, IOException {
    String message = null;
        PdfReader pdfReader = new PdfReader(new FileInputStream(srcFile));
        FileOutputStream fos = new FileOutputStream(destFile);
        PdfStamper stamper = new PdfStamper(pdfReader, fos);
        stamper.setEncryption(password.getBytes(), password.getBytes(),
                PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128
                        | PdfWriter.DO_NOT_ENCRYPT_METADATA);
        stamper.close();
        fos.close();
        pdfReader.close();
        message = "The Given File is Now Password Protected";
    return message;
}

相关内容

  • 没有找到相关文章

最新更新