解壓和壓縮帶密碼的文件竹葉青專欄博客頻道csdn_第1頁
解壓和壓縮帶密碼的文件竹葉青專欄博客頻道csdn_第2頁
解壓和壓縮帶密碼的文件竹葉青專欄博客頻道csdn_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、15-9-23Java解壓和壓縮帶 的zip文件 - 竹葉青的專欄 - 博客頻道 - CSDN.NET竹葉青的專欄讀書即未成名究竟人品高雅 修德不期獲報(bào)自然夢(mèng)穩(wěn)心安個(gè)人資料寫博客,送money、送書、送C幣啦 7-8月博樂推薦文章 砸BUG 得大獎(jiǎng) 100% 率 開發(fā)學(xué)習(xí)路線高級(jí)篇上線 恭喜博主周兆熊Java解壓和壓縮帶 的zip文件分類: Java 算法 開源項(xiàng)目java 壓縮2012-07-07 13:41 5475人閱讀 評(píng)竹葉青1986關(guān)注發(fā)私信提示:本文介紹的是winzipaes項(xiàng)目,但該開源項(xiàng)目使用起來并不太方便,我最終也沒有采用它,如 境中處理zip壓縮文件的需要,推薦采用zip

2、4j這一開源項(xiàng)目,相比winzipaes僅支持AES算法而言,zi 它方面也是非 可以說是強(qiáng)大。詳見另一篇博: 146925次: 2289等級(jí):排名: 第8794名t/zhangyihui1986/article/details/7921376: 65篇譯文: 10篇: 0篇評(píng)論: 188條前言文章搜索JDK自帶的ZIP操作接口(java.util.zip包,請(qǐng)參看文章末尾的博客 )并不支持 ,甚至也不支持中文文件為了解決ZIP壓縮文件的 問題,在網(wǎng)上搜索良久,終于找到了winzipaes開源項(xiàng)目。該項(xiàng)目在 code下托 址為:,僅支持AES壓縮和解壓zip文件(supports Win-Zi

3、p's 256-Bit AES mode.)。 上 的文件是源代碼,最新版本為winzipaes_src_20120416.z 礎(chǔ)上編寫。文章分類Java (54)Spring (11)struts2 (2)Javascript (9)XML (2)算法 (5)JNI (3)Linux (6)其它 (6)nodejs (2)開源項(xiàng)目 (16)Android (11)php (1)詳述項(xiàng)目使用很簡(jiǎn)單,利用源碼 導(dǎo)出一個(gè)jar文件,在項(xiàng)目中 即可。這里有一個(gè)需要注意的問題,就是如果給定ZIP文件沒有 ,那么就不能使用該項(xiàng)目解壓,如果壓縮文件沒有在這里會(huì)報(bào)一個(gè)異常,所以使用中需要注意:加密Z

4、IP文件可以使用它解壓,沒有加密的就需要采取其它方式了另外:直接從 Code上取下來的項(xiàng)目是不支持含有中文的的文件名的,因?yàn)閣inzipaes默認(rèn)采用的是“ISO-8 有人稍微修改了一下源碼,使其支持中文文件名,請(qǐng)參照這里:此文就是采用修改后的winzipaes編寫,并 詳細(xì)修改步驟。winzipaes項(xiàng)目依賴bcprov的jar包,可以到上 。示例文章存檔2015年09月 (3)2015年07月 (1)2015年06月 (2)2015年05月 (2)2015年04月 (2)在研究該項(xiàng)目時(shí)寫了一個(gè)工具類,本來準(zhǔn)備用在項(xiàng)目中,最后找到了更好的解決方案zip4j來代替,所以最終沒有java01.0

5、2.03.04.05.06.07.08.package com.ninemax.demo.zip.decrypt;import java.io.File;import java.io.IOException;import java.util.List;import java.util.zip.DataFormatException;展開閱讀排行import mons.io.FileUtils;1/6目錄(?)+目錄視圖15-9-23zip4j - Java處理zip壓縮文件 Solr4.4的安裝與配置docx4j - 使用Java處理word SWFUpload學(xué)習(xí)Win7系統(tǒng)上配置使用Int

6、ellij I NLPIR中文分詞系統(tǒng)之Java接 Java解壓和壓縮帶 的zip 解決sublimeText3無法安裝 Java解壓帶 的Rar壓縮文件使用docx4j編程式地創(chuàng)建復(fù)雜Java解壓和壓縮帶 的zip文件 - 竹葉青的專欄 - 博客頻道 - CSDN.NET(13926)(7242)(7029)(6764)(6412)(6178)(5475)(3808)(3708)(3618)09.10. import de.idyl.winzipaes.AesZipFileDecrypter;11. import de.idyl.winzipaes.AesZipFileEncrypter;1

7、2. import de.idyl.winzipaes.impl.AESDecrypter;13. import de.idyl.winzipaes.impl.AESDecrypterBC;14. import de.idyl.winzipaes.impl.AESEncrypter;15. import de.idyl.winzipaes.impl.AESEncrypterBC;16. import de.idyl.winzipaes.impl.ExtZipEntry;17.18. /*5.* 壓縮指定文件或目錄為ZIP格式壓縮文件* 支持中文(修改源碼后

8、)* 支持 (僅支持256bit的AES加密 )* 依賴bcprov項(xiàng)目(bcprov-jdk16-140.jar)* author zyh*/評(píng)論排行zip4j - Java處理zip壓縮文件 NLPIR中文分詞系統(tǒng)之Java接 向Docx4j生成的word文檔添 使用Docx4j創(chuàng)建word文檔docx4j - 使用Java處理word 使用SWIG將CRF+封裝成JN NLPIR(ICTCLAS2013)中文Java解壓和壓縮帶 的zip Solr4.4的安裝與配置POI向word2007文件 圖26. public class DecryptionZipUtil (45)(16)(14

9、)(14)(12)(11)(10)(9)(8)(8)3.94.95./* 使用指定 將給定文件或文件夾壓縮成指定的輸出ZIP文件* param srcFile 需要壓縮的文件或文件夾* param de

10、stPath 輸出路徑* param passwd 壓縮文件使用的*/public static void zip(String srcFile,String destPath,String passwd) AESEncrypter encrypter = new AESEncrypterBC();AesZipFileEncrypter zipFileEncrypter = null; try zipFileEncrypter = new AesZipFileEncrypter(destPath, encrypter);/* 此方法是修改源碼后添加,用以支持中文文件名*/ zipFileEnc

11、rypter.setEncoding("utf8"); File sFile = new File(srcFile);/* AesZipFileEncrypter提供了重載的添加Entry的方法,其中:* add(File f, String passwd)* 方法是將文件直接添加進(jìn)壓縮文件* add(File f, String pathForEntry, String passwd)* 方法是按指定路徑將文件添加進(jìn)壓縮文件* pathForEntry - to be used for addition of the file (path within zip file)

12、*/doZip(sFile, zipFileEncrypter, "", passwd); catch (IOException e) e.printStackTrace(); finally try zipFileEncrypter.close(); catch (IOException e) e.printStackTrace();最新評(píng)論在Android中定制Switch控件sk_lin : 不行!1.背景跟Thumb都被拉伸了,無法保持原有圖片的外觀2.嚴(yán)重的BUGswitch切換到O.NLPIR中文分詞系統(tǒng)之Java接口的使用竹葉青1986 : Kindle_co

13、de:不好意思, 時(shí)間太久了,我已經(jīng)記不清了,你到官網(wǎng)上看看,應(yīng)該有示例程序的;h.NLPIR中文分詞系統(tǒng)之Java接口的使用Kindle_code : 請(qǐng)問在linux的情況下,怎么動(dòng)態(tài) .so文件Intellij IDEA設(shè)置忽略部分類編譯錯(cuò)誤獻(xiàn)計(jì)獻(xiàn)策 : 恩 翻譯得不錯(cuò)在WebView自身打開 - 關(guān)于WebVi YarenCn : zhangyihui1986:搞清楚搞明白總是好的。NLPIR中文分詞系統(tǒng)之Java接口的使用竹葉青1986 : yyh1980jp:應(yīng)該是可以的,MacOS和Linux不是同源嗎?Linux是可以的,不過建議你.NLPIR中文分詞系統(tǒng)之Java接口的使用y

14、yh1980jp : 你好。 問下這個(gè)軟件蘋果電腦可以用嗎使用Rserve 執(zhí)行R竹葉青1986 : zxliujun:不明白你的問題, 這里只是建立連接,應(yīng)該是只要你的電腦能,就可以建立連接,不需.Java解壓帶 的Rar壓縮文件竹葉青1986 : u014706251:你說的是Go ogleCode嗎?如果是,可能需要翻Q,因?yàn)楸?了!使用Rserve 執(zhí)行Rzxliujun : RConnection rc = new RConne ction("22"./* 具體壓縮方法,將給定文件添加進(jìn)壓縮文件中,并處理壓縮文件中的路徑* param f

15、ile 給定磁盤文件(是文件直接添加,是目錄遞歸調(diào)用添加)* param encrypter AesZipFileEncrypter實(shí)例,用于輸出加密ZIP文件* param pathForEntry ZIP文件中的路徑* param passwd 壓縮* throws IOException*/private static void doZip(File file, AesZipFileEncrypter encrypter, String pathForEntry, String passwd) throws IOException if (file.isFile() pathForEnt

16、ry += file.getName(); encrypter.add(file, pathForEntry, passwd); return;pathForEntry += file.getName() + File.separator; for(File subFile : file.listFiles() doZip(subFile, encrypter, pathForEntry, passwd);/* 使用給定 解壓指定壓縮文件到指定目錄* param inFile 指定Zip文件* param outDir 解壓目錄* param passwd 解壓*/public static

17、void unzip(String inFile, String outDir, String passwd) File outDirectory = new File(outDir);if (!outDirectory.exists() outDirectory.mkdir();2/615-9-23Java解壓和壓縮帶 的zip文件 - 竹葉青的專欄 - 博客頻道 - CSDN.NET000

18、47.148.AESDecrypter decrypter = new AESDecrypterBC(); AesZipFileDecrypter zipDecrypter = null;try zipDecrypter = new AesZipFileDecrypter(new File(inFile), decrypter); AesZipFileDecrypter.charset = "u

19、tf-8"/* 得到ZIP文件中所有Entry,但此處好像與JDK里不同,目錄不視為Entry* 需要?jiǎng)?chuàng)建文件夾,entry.isDirectory()方法同樣不適用,不知道是不是 使用錯(cuò)誤* 處理文件夾問題處理可能不太好*/List<ExtZipEntry> entryList = zipDecrypter.getEntryList(); for(ExtZipEntry entry : entryList) String eName = entry.getName();String dir = eName.substring(0, eName.lastIndexOf(F

20、ile.separator) + 1); File extractDir = new File(outDir, dir);if (!extractDir.exists() FileUtils.forceMkdir(extractDir);/* 抽出文件*/File extractFile = new File(outDir + File.separator + eName); zipDecrypter.extractEntry(entry, extractFile, passwd); catch (IOException e) e.printStackTrace(); catch (DataF

21、ormatException e) e.printStackTrace(); finally try zipDecrypter.close(); catch (IOException e) e.printStackTrace();/* 測(cè)試* param args*/public static void main(String args) /* 壓縮測(cè)試* 可以傳文件或者目錄*/zip("M:ZIPtestbbat.txt", "M:ZIPtesttemp1.zip", "zyh"); zip("M:ZIPtestbb&qu

22、ot;, "M:ZIPtesttemp2.zip", "zyh");/unzip("M:ZIPtesttemp2.zip", "M:ZIPtesttemp", "zyh");壓縮多個(gè)文件時(shí),有兩個(gè)方法(第一種沒試):(1) 預(yù)先把多個(gè)文件壓縮成zip,然后調(diào)用enc.addAll(inZipFile, password);方法將多個(gè)zip文件加進(jìn)來。(2) 需要壓縮的文件循環(huán)調(diào)用enc.add(inFile, password);,每次都用相同的 。修改源碼后的項(xiàng)目可到上面提到的博客去 ,或者參

23、照博客 修改,其實(shí)也很容易,畢竟只有幾處改動(dòng)。另外 CSDN 頻道也上傳了修改后的源碼和jar包,也可以去那里 。修改參考需要修改的文件有:ExtZipOutputStreamExtZipEntryAesZipFileEncrypter在ExtZipOutputStream里增加一成員變量并添加兩個(gè)方法:tected String encoding = "iso-8859-1" public boolean utf8 = false;3/615-9-23Java解壓和壓縮帶 的zip文件 - 竹葉青的專欄 - 博客頻道 - CSDN.NETjava

24、01.02.03.04.public void setEncoding(String encoding) this.encoding = encoding;utf8 |= isUTF8(encoding);tected boolean isUTF8(String encoding) if (encoding = null) / check platform's default encodingencoding = System.getProperty("file.encoding");return &qu

25、ot;UTF8".equalsIgnoreCase(encoding)| "UTF-8".equalsIgnoreCase(encoding);然后將ExtZipOutputStream的(134行和158行左右)iso-8859-1編碼替換成上面設(shè)置的編碼格式接著,再將106行左右文件名長(zhǎng)度取得代碼改成:java01.writeShort(entry.getName().getBytes(encoding).length); / file name length這里有個(gè)地方需要注意,當(dāng)文件名是utf8編碼格式的時(shí)候,需要設(shè)置Zip包的通用位標(biāo)志 (不明白)第十一

26、個(gè)比特為1,代碼修改如下:修改ExtZipEntry類在initEncryptedEntry方法基礎(chǔ)上增加一個(gè)重載方法:java01.02.03.04.05.06.07.08.06.37.38.public void initEncryptedEntry(boolean utf8Flag) setCrc(0); / CRC-32 / for encrypted files it's 0 as AES/MAC checks in

27、tegritiythis.flag |= 1; / bit0 - encrypted if (utf8Flag) this.flag |=(1 << 11);/ flag |= 8; / bit3 - use data descriptor this.primaryCompressionMethod = 0x63;byte extraBytes = new byte11; extraBytes = new byte11;/ extra data header ID for AES encryption is 0x9901 extraBytes0 = 0x01;extraBytes1

28、 = (byte)0x99;/ data size (currently 7, but subject to possible increase in the/ future)extraBytes2 = 0x07; / data size extraBytes3 = 0x00; / data size/ Integer version number specific to the zip vendor extraBytes4 = 0x02; / version number extraBytes5 = 0x00; / version number/ 2-character vendor ID

29、extraBytes6 = 0x41; / vendor id extraBytes7 = 0x45; / vendor id/ AES encryption strength - 1=128, 2=192, 3=256 extraBytes8 = 0x03;/ actual compression method - 0x0000=stored (no compression) - 2 bytes extraBytes9 = (byte) (getMethod() & 0xff);extraBytes10 = (byte) (getMethod() & 0xff00) >

30、> 8);setExtra(extraBytes);其實(shí)就是增加一個(gè)參數(shù)并增加了下面這段代碼:java01.02.03.if (utf8Flag) this.flag |=(1 << 11);當(dāng)然不要忘了將調(diào)用該方法地方修改一下,傳進(jìn)utf8Flag參數(shù)4/615-9-23Java解壓和壓縮帶 的zip文件 - 竹葉青的專欄 - 博客頻道 - CSDN.NETAesZipFileEncrypter類里有兩處(在兩個(gè)add方法中)其它地方不需改動(dòng)。注:以上代碼 已測(cè)試通過,如果哪位朋友測(cè)試出錯(cuò),請(qǐng)留言!Java基本JDK壓縮和解壓ZIP文件請(qǐng)參照:相關(guān)文件:本文為博主 文章,

31、博主 不得 。上一篇 Java使用基本JDK操作ZIP文件下一篇 Java解壓帶 的Rar壓縮文件主題推薦 java jdk color壓縮開源項(xiàng)目 博客猜你在找快速掌握J(rèn)Query移動(dòng) APP測(cè)試從零開始(初級(jí)zip4j - Java處理zip壓縮文件一個(gè)JAVA文件加密代碼數(shù)據(jù)結(jié)構(gòu)和算法Java基礎(chǔ) 技術(shù):Java反射機(jī)HTML 5移動(dòng)開發(fā)從入門到精通在Android的WebView中給一級(jí)域支付寶 網(wǎng)頁即時(shí)到賬接口4之?dāng)?shù)據(jù) 之sharePreference準(zhǔn)備好了么?!java開發(fā)技術(shù)員我要跳槽java開發(fā)工程師我要跳槽今麥郎飲品| 8-15K/月世景科技(北京)| 8-15K/月數(shù)據(jù)分析員Java開發(fā)工程師我要跳槽我要跳槽龐大汽貿(mào)| 3-4K/月文思海輝技術(shù)| 8-15K/月查看評(píng)論云水-禪心如果拿到一個(gè)陌生壓縮包文件(郵件 的),怎么 是不是加密過?3樓 2竹葉青1986回復(fù)zhanghao_Hulk:建議你看看這篇博客:http /

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論