0
A
回答
2
不幸的是,這是不能直接與Zip4j的當前版本。我現在正在重寫Zip4j,我將在下一個版本中包含此功能。
但是,在當前版本中,有一個解決方法。看看下面的代碼。您可以嘗試將zip文件讀入內存。對於AES加密的zip文件,您將立即得到ZipException並帶有代碼ZipExceptionConstants.WRONG_PASSWORD
。對於標準郵政編碼加密,驗證密碼並不容易。如果輸入的密碼錯誤,Zip4j會拋出CRC異常,這很可能意味着密碼錯誤,但也可能是zip文件中的損壞數據。我知道下面的代碼不是乾淨的代碼,但不幸的是,是目前唯一的方法。 Zip4j的下一個版本將包括一個整潔的功能來驗證密碼。
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.exception.ZipExceptionConstants;
import net.lingala.zip4j.model.FileHeader;
public class VerifyPassword {
public static void verify() {
try {
ZipFile zipFile = new ZipFile(new File("myZip.zip"));
if (zipFile.isEncrypted()) {
zipFile.setPassword(new char[] {'t', 'e', 's', 't'});
}
List<FileHeader> fileHeaders = zipFile.getFileHeaders();
for(FileHeader fileHeader : fileHeaders) {
try {
InputStream is = zipFile.getInputStream(fileHeader);
byte[] b = new byte[4 * 4096];
while (is.read(b) != -1) {
//Do nothing as we just want to verify password
}
is.close();
} catch (ZipException e) {
if (e.getCode() == ZipExceptionConstants.WRONG_PASSWORD) {
System.out.println("Wrong password");
} else {
//Corrupt file
e.printStackTrace();
}
} catch (IOException e) {
System.out.println("Most probably wrong password.");
e.printStackTrace();
}
}
} catch (Exception e) {
System.out.println("Some other exception occurred");
e.printStackTrace();
}
}
public static void main(String[] args) {
verify();
}
}
相關問題
- 1. 如何使用zip4j提取帶密碼保護的zip文件
- 2. Zip4j從Zip中排除文件夾
- 3. 無法使用zip4j在java中創建zip文件
- 4. 解壓.ZIP與Java文件中使用zip4j
- 5. 我想使用zip4j jar文件提取受密碼保護的ZIP文件,但我得到以下錯誤
- 6. 檢查zip或gzip是否使用密碼加密(Node.JS)
- 7. 使用Zip4j生成Zip下載
- 8. 檢查Zip文件是否有密碼保護
- 9. 7-zip如何檢查您提供的密碼是否正確?
- 10. 使用DotNetZip檢查zip文件
- 11. 使用python zipfile查找zip密碼
- 12. 檢查zip文件的文件
- 13. 密碼保護的zip文件
- 14. 帶ZipArchive密碼的Zip文件Objective-C
- 15. 驗證密碼保護的ZIP文件
- 16. Zip4j:如果創建的zip文件存在,如何覆蓋
- 17. 如何檢查一個zip文件是否在IOS中受密碼保護?
- 18. 使用請求和HTTPBasicAuth從受密碼保護的站點檢索zip文件
- 19. Python代碼來創建一個密碼加密的zip文件?
- 20. 我們可以使用minizip設置zip文件的密碼
- 21. 使用TrueZip創建受密碼保護的ZIP文件
- 22. 如何提取僅使用PHP密碼的ZIP文件?
- 23. 使用Mapreduce處理受密碼保護的zip文件
- 24. 如何使用java設置zip文件的密碼?
- 25. 使用.NET 4.5解壓縮受密碼保護的ZIP文件
- 26. zip文件加密
- 27. 密碼選項不Zip文件工作
- 28. JavaScript的密碼檢查,並打開HTML文件,如果正確
- 29. Txt文件密碼檢查批次
- 30. 檢查一個zip文件是否有密碼保護,在objective-c
Hi Srikanth,有點偏離主題,但zip4j支持哪些加密格式?它比標準的zip庫更多嗎?我有一堆加密的拉鍊與未知的算盤。 – tom
當您編寫標準的zip庫時,假定您的意思是JRE的內置zip(java.util.zip),則此庫不支持任何加密。 Zip4j支持AES以及標準zip加密 – SrikanthLingala
歡呼的回覆。我會檢查出來的。 – tom