## com.sun.pdfview.decrypt
Class PDFPassword

    java.lang.Object
      com.sun.pdfview.decrypt.PDFPassword

    public class PDFPassword

extends java.lang.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.

Field Summary
`static PDFPassword` `EMPTY_PASSWORD` The empty password

Constructor Summary
`PDFPassword(byte[] passwordBytes)` Construct a byte-based password
`PDFPassword(java.lang.String passwordString)` Construct a string-based password

Method Summary
`static PDFPassword` `nonNullPassword(PDFPassword password)` Ensure a non-null PDFPassword by substituting the empty password for a null password

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### EMPTY_PASSWORD

    public static final PDFPassword EMPTY_PASSWORD

  The empty password

Constructor Detail

### PDFPassword

    public PDFPassword(byte[] passwordBytes)

  Construct a byte-based password

  Parameters:
    `passwordBytes` - the password bytes

### PDFPassword

    public PDFPassword(java.lang.String passwordString)

  Construct a string-based password

  Parameters:
    `passwordString` - the password

Method Detail

### 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