You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2018/05/07 06:38:56 UTC

commons-compress git commit: COMPRESS-452 example for reading an encrypted archive

Repository: commons-compress
Updated Branches:
  refs/heads/master 4da56433b -> 77addfc26


COMPRESS-452 example for reading an encrypted archive


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/77addfc2
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/77addfc2
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/77addfc2

Branch: refs/heads/master
Commit: 77addfc268746a5b4b5abbbcef1cb3e6510690b1
Parents: 4da5643
Author: Stefan Bodewig <bo...@apache.org>
Authored: Mon May 7 08:36:52 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Mon May 7 08:36:52 2018 +0200

----------------------------------------------------------------------
 src/site/xdoc/examples.xml | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/77addfc2/src/site/xdoc/examples.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/examples.xml b/src/site/xdoc/examples.xml
index 80b52d7..7c26f3a 100644
--- a/src/site/xdoc/examples.xml
+++ b/src/site/xdoc/examples.xml
@@ -191,7 +191,33 @@ SevenZFile sevenZFile = new SevenZFile(inMemoryByteChannel);
 SevenZArchiveEntry entry = sevenZFile.getNextEntry();
 sevenZFile.read();  // read current entry's data
 ]]></source>
-      </subsection>
+
+          <h4><a name="Encrypted 7z Archives"></a>Encrypted 7z Archives</h4>
+
+          <p>Currently Compress supports reading but not writing of
+          encrypted archives. When reading an encrypted archive a
+          password has to be provided to one of
+          <code>SevenZFile</code>'s constructors. If you try to read
+          an encrypted archive without specifying a password a
+          <code>PasswordRequiredException</code> (a subclass of
+          <code>IOException</code>) will be thrown.</p>
+
+          <p>When specifying the password as a <code>byte[]</code> one
+          common mistake is to use the wrong encoding when creating
+          the <code>byte[]</code> from a <code>String</code>. The
+          <code>SevenZFile</code> class expects the bytes to
+          correspond to the UTF16-LE encoding of the password. An
+          example of reading an encrypted archive is</p>
+
+<source><![CDATA[
+SevenZFile sevenZFile = new SevenZFile(new File("archive.7z"), "secret".getBytes(StandardCharsets.UTF_16LE));
+SevenZArchiveEntry entry = sevenZFile.getNextEntry();
+byte[] content = new byte[entry.getSize()];
+LOOP UNTIL entry.getSize() HAS BEEN READ {
+    sevenZFile.read(content, offset, content.length - offset);
+}
+]]></source>
+        </subsection>
 
       <subsection name="ar">