如何在内存中压缩并加密ZIP

  项目中遇到了一个问题,考虑到安全原因,需要将文件以二进制数据的方式打包成压缩文件,并且这个压缩文件是有密码的。

去Google上找了些API,下载来看了下,琢磨出了以下方法

  首先放API:

<!-- https://mvnrepository.com/artifact/de.idyl/winzipaes -->
<dependency>
<groupId>de.idyl</groupId>
<artifactId>winzipaes</artifactId>
<version>1.0.1</version>
</dependency>

用了API后代码很简单,将一个二进制输入流塞进去,再输出成二进制流即可

    public static byte[] compressBytes(byte[] bytes, String entryName,
String passWord) {
ByteArrayOutputStream bout = null;
ByteArrayInputStream bin = null;
try {
//二进制数组输出流
bout = new ByteArrayOutputStream();
bin = new ByteArrayInputStream(bytes.clone());
AesZipFileEncrypter encrypter;
encrypter = new AesZipFileEncrypter(bout, new AESEncrypterBC());
encrypter.add(entryName, bin, passWord);
encrypter.close();
return bout.toByteArray();
} catch (Exception e) {
LOGGER.error("", e);
} finally {
StreamUtils.closeQuietly(bout, bin);
}
return null;
} public static void main(String[] args) throws IOException {
byte[] bytes = StreamUtils.read(new File("c:\\2.png"));
StreamUtils.write(
compressBytesInMemory(bytes, "2.png", "123456"),
new FileOutputStream(new File("c:\\2.zip")));
}
上一篇:Eclipse卸载插件SpringSoource-tool-suite


下一篇:uwsgi_read_timeout超时处理