社区
Java EE
帖子详情
JAVA 解压有密码的ZIP文件(密码已知)
我在深圳搬砖-Justin
2010-01-11 12:14:17
org.apache.tools 解压已经实现
不知道有密码应该如何解决....
不要使用Windows自带的 winrar
...全文
1408
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
jdk.
zip
"后,你需要根据你的需求选择安装
Java
EE或
Java
ME的SDK。对于
Java
EE,你可以使用其中的
Java
编译器来编译源代码,然后通过应用服务器(如Tomcat或GlassFish)部署你的应用。对于
Java
ME,你可以在...
解压
文件
时中文乱码问题处理
本文将详细探讨如何在使用7-
Zip
软件
解压
文件
时解决中文乱码问题,以及如何在C#编程环境中处理这一问题。 首先,我们需要了解乱码产生的原因。中文乱码通常是因为字符编码不一致导致的。当压缩
文件
创建时采用了一种...
java
-x86安装包.
zip
1. **
解压
文件
**:首先,你需要使用
解压
缩工具(如7-
Zip
或WinRAR)来
解压
"
java
-x86安装包.
zip
"。这将释放出"jdk-8u261-linux-x64.tar.gz"。 2. **确认架构**:确认你的系统是32位还是64位。如果是32位,那么你需要...
java
16.0.1 linux.
zip
通常,安装步骤包括
解压
zip
文件
,设置环境变量如
JAVA
_HOME,然后将bin目录添加到PATH中,以便系统可以找到
java
命令。 例如,你可以按照以下步骤在Linux上安装
Java
16.0.1: 1. 将`
java
16.0.1_linux.
zip
`
文件
下载到...
mysql-connector-
java
-8.0.23.
zip
2. **
解压
**:
解压
缩`mysql-connector-
java
-8.0.23.
zip
`,你将得到`mysql-connector-
java
-8.0.23.jar`
文件
。 3. **添加到类路径**: 将`mysql-connector-
java
-8.0.23.jar`添加到你的
Java
项目类路径中,这可以通过IDE...
Java EE
67,543
社区成员
225,859
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章