跳至內容

本頁尚未翻譯成繁體中文,因此以英文顯示。軟體本身已完整翻譯為繁體中文。

功能

功能

這裡寫的都是真正做好、測試過並且正在運作的東西。還沒做完的,會在本頁直接點名,而不是含糊帶過。

壓縮自己決定取捨

三種模式,一次決定

Lightning 追求速度,Balanced 取中間,Compact 追求容量。面板直接告訴你哪個最快、哪個最小,而不是藏在 1 到 9 的某個數字後面。

JAB-RIFT,從零寫起

比對搜尋器、正規 Huffman 階段與兩層解碼表 —— 全部是本專案自己的程式碼。程式裡沒有連結任何第三方壓縮函式庫。

用滿每個核心,但守住記憶體上限

資料區塊會在你允許的處理器數量上平行壓縮,並受你在設定裡指定的記憶體上限約束。上限調小仍然跑得完,只是重疊得少一些。

為彼此相似的檔案共用字典

同一份文件的多個修訂版、共用同一套結構的匯出檔、同一格式的記錄檔:為它們建立共用字典後,實測容量只有同一批檔案不用字典時的 16.7%。預設關閉,因為在內容混雜的資料夾裡它毫無收穫。

格式

可寫入 .jab、.zip 與 .7z

.jab 是原生容器:寫入最快,帶逐區塊校驗,也是這三種裡唯一能在此攜帶密碼的格式。.zip 與 .7z 則依通用方式寫出,任何其他工具都能毫無阻礙地開啟。

可讀取 .jab、.zip、.7z 與 .tar

ZIP 支援 store 與 deflate;7z 支援 LZMA2 資料夾,讀取時包含 x86 分支過濾器;tar 支援 ustar 以及 GNU 長檔名。

對通用格式據實以告

這裡寫出的 .zip 沒有 AES、沒有延伸時間戳記,也沒有 Unix 權限。.7z 則是每個實體區塊一個 LZMA2 資料夾,沒有逐檔過濾器。想要更高壓縮率、逐區塊 SHA-256 或密碼保護,答案就是 .jab。

保護

透過 Windows CNG 的 AES-256-GCM

每個區塊一筆記錄,96 位元隨機值與 128 位元驗證標籤,全部來自作業系統本身的實作。本專案不自創任何密碼學演算法。

檔名與雜湊同樣被加密

清單(檔名、大小、時間戳記、屬性)是一筆加密記錄;存放逐區塊 SHA-256 與 CRC-32C 的區塊表也是一筆加密記錄。

一次推導就知道密碼錯了

對空白明文計算的驗證標籤,讓讀取端只需一次 PBKDF2 推導就知道密碼不對,而不必先解完整個壓縮檔。

修復記錄

在 .jab 內部保留 1–30% 的備援資料,損毀的區塊就能被重建,而不只是被回報出來。它必須在損毀發生之前加入,而且只有 .jab 能攜帶。

完整性

CRC-32C 一律有,SHA-256 預設開

每個區塊都帶 CRC-32C;逐區塊 SHA-256 預設開啟,除非你把它關掉。前者告訴你某個區塊出錯了,後者讓「默默漏判」幾乎不可能發生。

兩種檢查方式

完整檢查會讀取檔頭、檔尾、區塊表與清單確認一致性,接著解碼每一個區塊。只解碼則跳過結構檢查那一輪。兩者都不會寫出任何檔案。

把話講明白

這兩種檢查都無法告訴你壓縮檔未被竄改:能改資料的人同樣能重算這兩個值。只有帶密碼的壓縮檔才能回答這個問題。

寫入是不可分割的

壓縮檔先寫入 .partial 檔,完整之後才更名,因此中途被中斷的執行絕不會留下看起來已經完成的檔案。

工具

分割與合併

依 10、25、100 或 700 MB,或你輸入的任意大小,在壓縮檔旁邊寫出 .001、.002…… 單獨一個分割檔無法讀取;合併時會先檢查每一個分割檔再寫入。

尋找重複檔案

在壓縮檔內部以 SHA-256 比對整個檔案,因此只有完全相同的副本才會被列出,並告訴你刪掉多餘副本能收回多少空間。空檔案會被略過。

與資料夾比對

檢查某個資料夾是否仍與當初封存的內容相符。兩邊都會算雜湊,所以即使改動後大小與時間戳記都沒變,照樣抓得出來。

掃描與修復

掃描只回報哪些分片損毀,不寫入任何東西。修復則借助修復記錄,只重寫確實出錯的那些部分。

視窗

Direct2D,為這個程式專門繪製

沒有網頁檢視,也沒有框架:介面由 Direct2D 與 DirectWrite 直接繪製,所以它開啟即用,工作執行時視窗依然順手。

附預覽的壓縮檔檢視器

開啟一個壓縮檔,對內容排序與篩選,並可直接預覽文字、圖片、PDF(單頁)與音訊,不必先解壓縮。

是佇列,不是跳窗乾等

工作依加入順序逐一執行。等待中的工作可以調整順序或移除,執行中的可以暫停,耗時長的工作可以轉到背景,而不必卡住整個視窗。

在你的壓縮檔裡搜尋

先依名稱找到壓縮檔,再按 Enter 搜尋它們內部的內容。它會據實說明讀取了幾個、有幾個已不存在、有幾個打不開。

檔案總管整合,自行啟用

用於壓縮、解壓縮與測試的右鍵選單項目,從設定畫面加入,也從同一處移除。

28 種語言

介面中的每一句文字都翻譯成了 28 種語言,並且依各自語言的複數規則處理,而不是把一條英文規則套用到所有地方。

還有命令列

同一套引擎,可以寫進指令碼。建立、解壓縮、列出、測試與驗證,執行緒數、記憶體上限與完整性層級都是參數。密碼絕不接受以命令列參數傳入 —— 執行中行程的完整命令列,同一帳戶下的其他行程讀得到 —— 所以它從 stdin 讀取,或在關閉回顯的情況下提示輸入。

使用指南
jab.exe
> jab c .\project -o project.jab --mode lightning
  scanning   412 files, 268 MB
  writing    project.jab
  output     96.4 MB (36.0% of input)
  elapsed    1.84 s   —   145.7 MB/s

> jab t project.jab
  412 entries · 268 MB checked · structure and every block
  ok

> jab x project.jab -o .\restored --overwrite fail
  412 files written, 0 skipped
  elapsed    0.94 s

還沒做的,也直說

  • 沒有安裝程式,也沒有程式碼簽章:1.0 是免安裝版本,Windows 會對未簽章的程式提出警告。

  • 沒有由右至左的版面,這正是阿拉伯文與希伯來文已翻譯卻暫不發布的原因。

  • 增量壓縮檔還無法記錄刪除動作,金鑰檔也尚未實作。

  • 多執行緒的擴充性仍不如 RAR,而且 RAR5 Normal 依然壓得更小。