社区
Java EE
帖子详情
JAVA 解压有密码的ZIP文件(密码已知)
我在深圳搬砖-Justin
2010-01-11 12:14:17
org.apache.tools 解压已经实现
不知道有密码应该如何解决....
不要使用Windows自带的 winrar
...全文
1397
23
打赏
收藏
JAVA 解压有密码的ZIP文件(密码已知)
org.apache.tools 解压已经实现 不知道有密码应该如何解决.... 不要使用Windows自带的 winrar
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fantasy2436
2010-01-12
打赏
举报
回复
http://blog.alutam.com/2009/10/31/reading-password-protected-zip-files-in-java/
這個應該可以 去看看吧
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
[Quote=引用 3 楼 ivy007 的回复:]
Google上搜的:http://poplar1123.javaeye.com/blog/183904
[/Quote]
使用了
Winrar 是通过 cmd命令解压的.
ivy007
2010-01-11
打赏
举报
回复
Google上搜的:http://poplar1123.javaeye.com/blog/183904
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
[Quote=引用 1 楼 maer56 的回复:]
现在没有可以实现的,我以前找过,找不到相关文章
[/Quote]
就是找不到 才来提问的
maer56
2010-01-11
打赏
举报
回复
现在没有可以实现的,我以前找过,找不到相关文章
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
[Quote=引用 20 楼 bao110908 的回复:]
zip 规范标准中好像是带有加密算法的,但是 JDK 和 Apache 中的 ZIP 没有实现。估计与加密算法的出口限制有关。
[/Quote]
岂不是杯具了
fantasy2436
2010-01-11
打赏
举报
回复
頂!
火龙果被占用了
2010-01-11
打赏
举报
回复
zip 规范标准中好像是带有加密算法的,但是 JDK 和 Apache 中的 ZIP 没有实现。估计与加密算法的出口限制有关。
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
to:zhangkai08111
搜索到过
但是 不懂 padding 这个方法是怎么写的
小爽昵称已被占用
2010-01-11
打赏
举报
回复
zip ?
\第一步:剥去密码:
下面方法是解密工作,参数:
srcFile:源文件地址
destfile:解密后的临时文件
pwd:密码
Java code
public static void decrypt(String srcFile, String destfile, String pwd) throws Exception { SecureRandom sr = new SecureRandom(); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); DESKeySpec dks = new DESKeySpec(padding(Base64.encode(pwd.getBytes()))); SecretKey securekey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, securekey, sr); InputStream is = new FileInputStream(srcFile); OutputStream out = new FileOutputStream(destfile); CipherOutputStream cos = new CipherOutputStream(out, cipher); byte[] buffer = new byte[1024]; byte[] pwdByte = new byte[20]; int len = is.read(pwdByte); byte[] hashByte = DigisterUtil.getHashEncode(pwd.getBytes()); if (len != 20 || hashByte.length != 20) { throw new RuntimeException("密码错误"); } for (int i = 0; i < 20; i++) { if (pwdByte[i] != hashByte[i]) { throw new RuntimeException("密码错误"); } } int r; while ((r = is.read(buffer)) >= 0) { cos.write(buffer, 0, r); } cos.close(); out.close(); is.close(); }
第二步:用ZipFile和ZipEntry解压缩文件:
Java code
ZipFile zipFile = new ZipFile(上面的临时文件); Enumeration entryEnu = zipFile.entries(); while (entryEnu.hasMoreElements()) { ZipEntry entry = (ZipEntry) entryEnu.nextElement(); is = zipFile.getInputStream(entry); bos = new ByteArrayOutputStream(is.available()); byte[] buff = new byte[8192]; int len = 0; while ((len = is.read(buff)) != -1) { bos.write(buff, 0, len); } bis = new ByteArrayInputStream(bos.toByteArray()); break; } temp.delete();
要注意的是,本程序不一定能解开你的压缩文件,如果是用java.util.zip包下的工具压缩的文件就可以。\
---from
http://topic.csdn.net/u/20091119/16/bd9e7aad-dd90-49d0-a921-40630926d201.html
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
[Quote=引用 16 楼 huanqun1020 的回复:]
学习,帮顶
[/Quote]
谢了
huanqun1020
2010-01-11
打赏
举报
回复
学习,帮顶
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
[Quote=引用 14 楼 maer56 的回复:]
放弃把,我早就放弃了。哈哈。如果你找到方法了,别忘了也告诉我下
[/Quote]
别啊 哥们... 别放弃啊啊
maer56
2010-01-11
打赏
举报
回复
放弃把,我早就放弃了。哈哈。如果你找到方法了,别忘了也告诉我下
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
很纠结的问题
没看到和加密有关的字眼
bayougeng
2010-01-11
打赏
举报
回复
不愿看API就在eclipse里“.”
然后看哪个方法名像,自己试试。
qq77504166
2010-01-11
打赏
举报
回复
学习一下,哈哈
maer56
2010-01-11
打赏
举报
回复
在代码里面用嵌入CMD命令
maer56
2010-01-11
打赏
举报
回复
你要么就用命令方式把,想靠代码完成估计是不可能了
我在深圳搬砖-Justin
2010-01-11
打赏
举报
回复
[Quote=引用 6 楼 bayougeng 的回复:]
查查API啊,不会这么弱智,连设置解压密码的方法都没留吧。
[/Quote]
API 看的头大...
加载更多回复(3)
java
jdk.
zip
此
文件
是
java
ee和
java
me最新版的jdk包,
Java
开发必备。下载后
解压
即可使用。为方便大家下载上传到csdn。求过审。
java
-x86安装包.
zip
java
-x86安装包.
zip
java
16.0.1 linux.
zip
java
sdk 16.0.1版本,上传日期 2021-05-14, 内包含包含 linux 的安装包以及
zip
压缩包,供个人选择
mysql-connector-
java
-8.0.23.
zip
mysql-connector-
java
-8.0.23
mysql-connector-
java
-6.0.5.
zip
mac os 版本 mysql-connector-
java
-6.0.5.
zip
下载
解压
即可使用!
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章