Class PDFPassword

java.lang.Object
org.loboevolution.pdfview.decrypt.PDFPassword

public class PDFPassword extends Object

Identifies a PDF Password, expressible either as a string or a byte sequence.

In revisions up to version 1.e Expansion 3, the mapping between a string and the bytes corresponding to the password was poorly specified, meaning that the safest manner in which to specify a password was via a byte array. With 1.7 expansion 3, a still slightly problematic mapping was given for the Standard encryption algorithms through to version 4, and a very well specified mapping for the new version 5 encryption.

So, for passwords specified in versions up to and including 4, a byte[] representation is the most accurate, but not necessarily the most convenient manner to provide passwords. For version 5, allowing passwords to be specified as Strings will be the preferred mechanism. Rather than specify two interfaces whenever a password can be provided - one for byte[] and one for String - we express the password as a class. This class can also offer a best guess at a String representation for a password for encryption versions up to and including 4.

Author Luke Kirby

  • Field Details

    • EMPTY_PASSWORD

      public static final PDFPassword EMPTY_PASSWORD
      The empty password
  • Constructor Details

    • PDFPassword

      public PDFPassword(byte[] passwordBytes)
      Construct a byte-based password
      Parameters:
      passwordBytes - the password bytes
    • PDFPassword

      public PDFPassword(String passwordString)
      Construct a string-based password
      Parameters:
      passwordString - the password
  • Method Details

    • nonNullPassword

      public static PDFPassword nonNullPassword(PDFPassword password)
      Ensure a non-null PDFPassword by substituting the empty password for a null password
      Parameters:
      password - the password, may be null
      Returns:
      a non-null password