pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "M. Niedermair" <m_...@gmx.de>
Subject pdf encryption with aes
Date Thu, 18 Feb 2016 12:56:36 GMT
Hello,

I have a problem with the AES encryption algorithm.

The PDF generated still displays RC4 and opening only blank pages are 
displayed.
I use iText with AES, AES is displayed and when opening all the pages 
are displayed correctly.
What am I doing wrong?

greeting
Michael

My Code:
import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.PDEncryption;
import org.apache.pdfbox.pdmodel.encryption.SecurityHandler;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
import org.apache.pdfbox.util.Version;

public class Test01 {

    public static void main(final String[] args) throws IOException {
       final File input = new File("s10.pdf");
       final File output = new File("target/s10-secure.pdf");

       final AccessPermission ap = new AccessPermission();
       ap.setCanPrint(true);
       ap.setCanPrintDegraded(true);
       ap.setCanModify(false);
       ap.setCanAssembleDocument(false);
       ap.setCanExtractContent(false);
       ap.setCanFillInForm(false);
       ap.setCanExtractForAccessibility(false);
       ap.setCanModifyAnnotations(false);

       PDDocument document = PDDocument.load(input);

       final StandardProtectionPolicy spp = new 
StandardProtectionPolicy("12345", null, ap);
       spp.setEncryptionKeyLength(128);
       document.protect(spp);
       document.getEncryption().getSecurityHandler().setAES(true);
       document.getEncryption().getSecurityHandler().setKeyLength(128);
       document.setVersion(1.5f);
       document.save(output);
       document.close();
       System.out.println(output.getName() + " create");

       // relaod and print info...
       document = PDDocument.load(output);
       printInfo(document);
       document.close();

       // load pdf create with itext
       System.out.println("\n-------- with iText ----------------------");
       document = PDDocument.load(new File("s10-itext.pdf"));
       printInfo(document);
       document.close();

    }

    private static void printInfo(final PDDocument document) throws 
IOException {
       System.out.println("pdfbox     : " + Version.getVersion());
       System.out.println("Version    : " + document.getVersion());
       System.out.println("encrypted  : " + document.isEncrypted());

       final AccessPermission perm = document.getCurrentAccessPermission();
       System.out.println("enc_accesspermission        : " + 
perm.canAssembleDocument());
       System.out.println("enc_extractcontent          : " + 
perm.canExtractContent());
       System.out.println("enc_extractforaccessibility : " + 
perm.canExtractForAccessibility());
       System.out.println("enc_fillinform              : " + 
perm.canFillInForm());
       System.out.println("enc_modify                  : " + 
perm.canModify());
       System.out.println("enc_modifyannotations       : " + 
perm.canModifyAnnotations());
       System.out.println("enc_print                   : " + 
perm.canPrint());
       System.out.println("enc_printdegraded           : " + 
perm.canPrintDegraded());

       final PDEncryption enc = document.getEncryption();
       System.out.println("enc_length      : " + enc.getLength());
       final SecurityHandler sh = enc.getSecurityHandler();
       System.out.println("enc_sh_length   : " + sh.getKeyLength());
       System.out.println("enc_sh_name     : " + (sh.isAES() ? "AES" : 
"RC4"));
    }

}

Output:
s10-secure.pdf create
pdfbox     : 2.0.0-RC3
Version    : 1.5
encrypted  : true
enc_accesspermission        : false
enc_extractcontent          : false
enc_extractforaccessibility : false
enc_fillinform              : false
enc_modify                  : false
enc_modifyannotations       : false
enc_print                   : true
enc_printdegraded           : true
enc_length      : 128
enc_sh_length   : 40
enc_sh_name     : RC4

-------- with iText ----------------------
pdfbox     : 2.0.0-RC3
Version    : 1.5
encrypted  : true
enc_accesspermission        : false
enc_extractcontent          : false
enc_extractforaccessibility : false
enc_fillinform              : false
enc_modify                  : false
enc_modifyannotations       : false
enc_print                   : true
enc_printdegraded           : true
enc_length      : 128
enc_sh_length   : 40
enc_sh_name     : AES


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message