docs: public InputStream decrypt(InputStream source, SecretKey key) throws IOException {
  
          Cipher cipher = getCipher();
  
          // Remove the initialisation vector from the start of the stream.
          // NB if the stream is empty, the read will return -1 and no harm will
          // be done.
          byte[] iv = new byte[getIvSize(cipher)];
  
          // The IV can be stored unencrypted at the start of the stream:
          source.read(iv);
  
          // Get a cipher instance and create the cipherInputStream:
          initCipher(cipher, Cipher.DECRYPT_MODE, key, iv);
          CipherInputStream cipherInputStream = new CipherInputStream(source, cipher);
  
          // Return the initialised stream:
          return cipherInputStream;
      }