0

Javaコードからファイルにパスワードを適用しているときに、デジタル署名の検証で問題が発生します。私のシナリオでは、すでにデジタル署名が付いているファイルを取得しています。 デジタル署名されたPDFファイルにパスワードを入れたいのですが。

パスワードを入力することはできますが、デジタル署名が検証されていないことが懸念されます。それを達成する方法を教えてください。それを持つことは可能ですか?

私の側からさらに説明が必要な場合はお知らせください。

4

2 に答える 2

2

以前に署名したPDFに、署名を壊さずにパスワードを設定することはできません。署名は、署名されたデータがバイトのストリームとして変更されていないかどうかをチェックします。パスワードはそれらのバイトを変更します。したがって、後でパスワードが適用されると、署名が壊れます。

署名と暗号化を同時に検討することもできます。

それが不可能な場合は、署名されたPDFをPDFポートフォリオに追加し、そのポートフォリオを暗号化することを検討してください。その場合、署名されたPDFはポートフォリオから開く必要があり、これはそれを復号化することを意味します。

PS上記のすべてで、XFA署名ではなく、通常のPDF署名を意味していると仮定しました。

于 2012-12-20T14:05:39.760 に答える
-1

最初にデジタル署名を文字列に変換してから、このコードを使用してください

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;
}
于 2013-04-12T11:49:12.493 に答える