Zip4j扩展

项目当中有这样一个需求:用户下载的内容需要以加密zip包个格式发送给用户,但是发现JDK中对ZIP压缩并不支持加密,因此考虑使用第三方库来实现这个功能:
先在Github上找了一个 https://code.google.com/p/winzipaes/ winzipaes,支持ZIP加密,但是只支持AES256格式的(只有Winzip才能解压),另外一个比较严重的问题是JDK默认的JCE Provider并不支持256位的加密算法,如果替换服务器上的JCE Provider也不是个好的做法(需要替换JDK目录下部分文件)。
于是又找了另外一个库:zip4j: http://www.lingala.net/zip4j/支持的加密算法比较丰富,但是有个很头痛的问题:加密的目标只能是文件(只能传java.io.File或者文件名),但是应用里面是不希望生成文件的,于是花了2个小时对这zip4j进行了简单的扩展:
1.ZipEngineEx.java(ZipEngine的扩展):屏蔽了对文件流的依赖,支持OutputStream;
2.SplitOutputStreamEx.java(SplitOutputStream的扩展):屏蔽了对文件流的依赖,支持OutputStream;
3.ZipStream.java:对ZipEngineEx的包装,方便使用者调用,地位有点类似于ZipFile。

这个封装有几个大的问题,由于急着用,目前已经可以满足需要,就先这样了:
1.不支持多个文件的ZIP,原因待查;
2.不支持中文,设置了字符集编码没有效果(对原始库也有这个问题);
3.不支持文件分割:这个问题倒是不大。

zip4j灵活程度比较差,打算抽时间写个扩展性好一点的zip加密库。

猜你喜欢

转载自eyuxu.iteye.com/blog/1850161