2010-09-09 9 views
7

Ich muss PDF-Dateien verschlüsseln und entschlüsseln. Gibt es eine kostenlose oder kostengünstige Java API, die das tut? Grundsätzlich muss ich Dateien von normalen Benutzern verstecken. Gibt es einen anderen Vorschlag, um dies programmatisch zu erreichen?Java API zum Verschlüsseln/Entschlüsseln von PDF-Dateien

Danke, Tief

+1

wie wollen Sie sie auf "abnormal" Benutzer zeigen? Sie sollten ihre privaten Schlüssel (möglicherweise Smartcards) mitbringen? – Bozho

Antwort

6

Verwendung iText:

// Assuming you provide the following yourself: 
    File inputFile; 
    File outputFile; 
    String userPassword; 
    String ownerPassword; 
    // A bit-field containing file permissions. 
    int permissions = PDFWriter.ALLOW_PRINTING | PDFWriter.ALLOW_COPY; 

    PdfReader reader = new PdfReader(inputFile); 
    PdfEncryptor.encrypt(reader, new FileOutputStream(outputFile), 
     ENCRYPTION_AES128, userPassword, ownerPassword, 
     permissions); 

Hier ist die API für PDFEncryptor und PDFWriter (für die Berechtigungen).

+0

Danke Frederik. Können Sie auch Code zum Entschlüsseln der verschlüsselten Datei bereitstellen? –

+0

Für welche Version von iText ist das möglich? – demaniak

+0

Es sieht so aus, als hätte sich iText ein wenig verändert, seit diese Antwort akzeptiert wurde. [Hier ist] (http://developers.itextpdf.com/examples/security/clone-encrypting-decrypting-pdfs) ein Beispiel für das Ver- und Entschlüsseln in iText 7. Und [hier] (http://itextsupport.com /apidocs/itext7/7.0.0/) ist der aktualisierte Speicherort der API-Dokumente. –

5

iText unterstützt die Verschlüsselung.

6

Mit PDFBox (basierend auf Decrypt.java Code):

PDDocument document = null; 

try 
{ 
    document = PDDocument.load(infile); 

    if(document.isEncrypted()) 
    { 
     DecryptionMaterial decryptionMaterial = null; 
     decryptionMaterial = new StandardDecryptionMaterial(password); 
     document.openProtection(decryptionMaterial); 
     AccessPermission ap = document.getCurrentAccessPermission(); 
     if(ap.isOwnerPermission()) 
     { 
      document.setAllSecurityToBeRemoved(true); 
      document.save(outfile); 
     } 
     else 
     { 
      throw new IOException(
      "Error: You are only allowed to decrypt a document with the owner password."); 
     } 
    } 
    else 
    { 
     System.err.println("Error: Document is not encrypted."); 
    } 
} 
finally 
{ 
    if(document != null) 
    { 
     document.close(); 
    } 
} 
Verwandte Themen