## org.apache.poi.poifs.crypt
Class Decryptor

    java.lang.Object
      org.apache.poi.poifs.crypt.Decryptor

Direct Known Subclasses:
  AgileDecryptor, EcmaDecryptor

    public abstract class Decryptor

extends java.lang.Object

Field Summary
`static java.lang.String` `DEFAULT_PASSWORD`

Constructor Summary
`Decryptor()`

Method Summary
`protected static int` `getBlockSize(int algorithm)`
`abstract java.io.InputStream` `getDataStream(DirectoryNode dir)` Return a stream with decrypted data.
`java.io.InputStream` `getDataStream(NPOIFSFileSystem fs)`
`java.io.InputStream` `getDataStream(POIFSFileSystem fs)`
`static Decryptor` `getInstance(EncryptionInfo info)`
`abstract long` `getLength()` Returns the length of the encytpted data that can be safely read with `getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode)`.
`protected byte[]` `hashPassword(EncryptionInfo info, java.lang.String password)`
`abstract boolean` `verifyPassword(java.lang.String password)`

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

Field Detail

### DEFAULT_PASSWORD

    public static final java.lang.String DEFAULT_PASSWORD

See Also:
  Constant Field Values

Constructor Detail

### Decryptor

    public Decryptor()

Method Detail

### getDataStream

    public abstract java.io.InputStream getDataStream(DirectoryNode dir)
                                               throws java.io.IOException,
                                                      java.security.GeneralSecurityException

  Return a stream with decrypted data.

  Use `getLength()` to get the size of that data that can be safely read from the stream. Just reading to the end of the input stream is not sufficient because there are normally padding bytes that must be discarded

  Parameters:
    `dir` - the node to read from
  Returns:
    decrypted stream
  Throws:
    `java.io.IOException`
    `java.security.GeneralSecurityException`

### verifyPassword

    public abstract boolean verifyPassword(java.lang.String password)
                                    throws java.security.GeneralSecurityException

  Throws:
    `java.security.GeneralSecurityException`

### getLength

    public abstract long getLength()

  Returns the length of the encytpted data that can be safely read with `getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode)`. Just reading to the end of the input stream is not sufficient because there are normally padding bytes that must be discarded

  The length variable is initialized in `getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode)`, an attempt to call getLength() prior to getDataStream() will result in IllegalStateException.

  Returns:
    length of the encrypted data
  Throws:
    `java.lang.IllegalStateException` - if `getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode)` was not called

### getInstance

    public static Decryptor getInstance(EncryptionInfo info)

### getDataStream

    public java.io.InputStream getDataStream(NPOIFSFileSystem fs)
                                      throws java.io.IOException,
                                             java.security.GeneralSecurityException

  Throws:
    `java.io.IOException`
    `java.security.GeneralSecurityException`

### getDataStream

    public java.io.InputStream getDataStream(POIFSFileSystem fs)
                                      throws java.io.IOException,
                                             java.security.GeneralSecurityException

  Throws:
    `java.io.IOException`
    `java.security.GeneralSecurityException`

### getBlockSize

    protected static int getBlockSize(int algorithm)

### hashPassword

    protected byte[] hashPassword(EncryptionInfo info,
                                  java.lang.String password)
                           throws java.security.NoSuchAlgorithmException

  Throws:
    `java.security.NoSuchAlgorithmException`

Copyright 2012 The Apache Software Foundation or its licensors, as applicable.