Javaコードからファイルにパスワードを適用しているときに、デジタル署名の検証で問題が発生します。私のシナリオでは、すでにデジタル署名が付いているファイルを取得しています。 デジタル署名されたPDFファイルにパスワードを入れたいのですが。
パスワードを入力することはできますが、デジタル署名が検証されていないことが懸念されます。それを達成する方法を教えてください。それを持つことは可能ですか?
私の側からさらに説明が必要な場合はお知らせください。
以前に署名したPDFに、署名を壊さずにパスワードを設定することはできません。署名は、署名されたデータがバイトのストリームとして変更されていないかどうかをチェックします。パスワードはそれらのバイトを変更します。したがって、後でパスワードが適用されると、署名が壊れます。
署名と暗号化を同時に検討することもできます。
それが不可能な場合は、署名されたPDFをPDFポートフォリオに追加し、そのポートフォリオを暗号化することを検討してください。その場合、署名されたPDFはポートフォリオから開く必要があり、これはそれを復号化することを意味します。
PS上記のすべてで、XFA署名ではなく、通常のPDF署名を意味していると仮定しました。
最初にデジタル署名を文字列に変換してから、このコードを使用してください
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;
}