Class BinaryRC4Decryptor

java.lang.Object
org.docx4j.org.apache.poi.poifs.crypt.Decryptor
org.docx4j.org.apache.poi.poifs.crypt.binaryrc4.BinaryRC4Decryptor

public class BinaryRC4Decryptor
extends Decryptor
  • Constructor Details

  • Method Details

    • verifyPassword

      public boolean verifyPassword​(java.lang.String password)
      Specified by:
      verifyPassword in class Decryptor
    • initCipherForBlock

      protected static javax.crypto.Cipher initCipherForBlock​(javax.crypto.Cipher cipher, int block, EncryptionInfoBuilder builder, javax.crypto.SecretKey skey, int encryptMode) throws java.security.GeneralSecurityException
      Throws:
      java.security.GeneralSecurityException
    • generateSecretKey

      protected static javax.crypto.SecretKey generateSecretKey​(java.lang.String password, EncryptionVerifier ver)
    • getDataStream

      public java.io.InputStream getDataStream​(DirectoryNode dir) throws java.io.IOException, java.security.GeneralSecurityException
      Description copied from class: Decryptor
      Return a stream with decrypted data.

      Use Decryptor.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

      Specified by:
      getDataStream in class Decryptor
      Parameters:
      dir - the node to read from
      Returns:
      decrypted stream
      Throws:
      java.io.IOException
      java.security.GeneralSecurityException
    • getLength

      public long getLength()
      Description copied from class: Decryptor
      Returns the length of the encrypted data that can be safely read with Decryptor.getDataStream(org.docx4j.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 Decryptor.getDataStream(org.docx4j.org.apache.poi.poifs.filesystem.DirectoryNode), an attempt to call getLength() prior to getDataStream() will result in IllegalStateException.

      Specified by:
      getLength in class Decryptor
      Returns:
      length of the encrypted data