posted 16 years ago
Check out Cipher, CipherInputStream and CipherOutputStream. The latter two are subclasses of FilterInputStream and FilterOutputStream respectively which means you can chain them. For example, for reading an encrypted gzip file:
Please note that the order is quite important:
- FileInputStream, being the actual source, needs to be the innermost InputStream
- since that file itself is encrypted, decrypting goes next with the CipherInputStream
- the unzipping finally follows
The writing code will be similar:
You can replace the outer stream (GZIPInputStream / GZIPOutputStream) with ZipInputStream / ZipOutputStream for regular zipping / unzipping, and with TarInputStream / TarOutputStream for using TAR to pack / unpack. For tar.gz or tgz files you can make the chain even one longer: