ToolAct工具行動

DES 加密解密工具

支援 DES 和 Triple DES(3DES),五種加密模式可選

加密配置

輸入內容
字元數: 0
字節數: 0
轉換結果
字元數: 0
字節數: 0

什麼是 DES?

DES(Data Encryption Standard,資料加密標準)誕生於 1977 年,由 IBM 研發並經美國國家安全局修改後成為聯邦標準。它採用 Feistel 網路結構,將 64 位元明文分成左右兩半,經過 16 輪迭代運算產生密文。DES 的金鑰名義上是 64 位元,但其中 8 位元用於同位元檢查,實際有效金鑰長度只有 56 位元。 56 位元金鑰在當年算得上安全,但隨著運算能力的飛速提升,1999 年就已經能在 22 小時內被暴力破解。為了延續 DES 的生命力,Triple DES(3DES)應運而生——它用三組不同的金鑰對資料執行三次 DES 加密,有效金鑰長度達到 168 位元,安全性大幅提升。3DES 被廣泛用於金融支付領域,至今仍是 EMV 晶片卡和部分銀行系統的底層加密方案。 雖然 AES 已經取代 DES 成為新的加密標準,但在很多舊系統、金融協定和嵌入式裝置中,DES 和 3DES 仍然在發揮作用。本工具支援 DES 和 3DES 兩種演算法,配合 CBC、ECB、CFB、OFB、CTR 五種模式,方便你在相容舊系統或學習密碼學時使用。

使用方式

使用方式

  1. 選擇演算法:DES(56 位元金鑰)或 3DES(168 位元金鑰)
  2. 選擇加密模式,建議使用 CBC
  3. 選擇填充方案,PKCS#7 適用於大多數情況
  4. 輸入金鑰或點選「產生隨機金鑰」
  5. 對於需要 IV 的模式,請輸入或產生一組
  6. 在左側輸入要加密的明文或要解密的密文
  7. 結果會自動顯示在右側

加密模式

  • CBC密碼區塊鏈結。加密前將每個明文區塊與前一個密文區塊進行 XOR 運算。需要 IV。安全性佳,是最常用的模式。
  • ECB電子密碼簿。每個區塊獨立加密——相同的明文區塊會產生相同的密文。適用於單一 8 位元組區塊,不建議用於較長的資料。
  • CFB密碼回饋。將區塊加密轉換為串流加密。適合逐位元組或以小區塊處理資料。
  • OFB輸出回饋。類似 CFB,但錯誤不會傳播。適用於通訊頻道雜訊較多的情況。
  • CTR計數器模式。使用遞增計數器產生金鑰串流。支援平行加密與解密,效能優異。

提示

  • 盡可能使用 AES,DES 主要為了向後相容而存在
  • 3DES 比 DES 安全得多,但速度大約慢三倍
  • 每次加密務必使用不同的隨機 IV
  • 避免使用 ECB 加密超過 8 位元組的資料
  • 產生隨機金鑰,而非輸入容易記住的字串

使用場景

重現舊版 DES 或 TripleDES 整合維護舊有的支付、電信、裝置或企業協定時,可選用 8 位元組金鑰的 DES 或 24 位元組金鑰的 TripleDES,並對應 ECB、CBC、CFB、OFB 或 CTR 模式。Feistel 網路的實作完全在瀏覽器中透過 crypto-js 執行,56 位元(DES)或 168 位元(3DES)的金鑰與明文不會離開當前分頁——在重現廠商範例時,不必透過遠端工具傳送實際的卡片資料。
精確對齊金鑰、IV 與密文格式金鑰和 IV 可輸入 Hex、Base64 或純文字格式,需要時可產生隨機素材,並在與其他系統比對輸出前驗證非 ECB 模式所需的 8 位元組 IV。頁面方便你確認不匹配的原因是金鑰長度錯誤(DES 需要 8 位元組,3DES 需要 24 位元組)、IV 缺失或過期,還是最後一個區塊的 PKCS#7 填充邊界問題。
記錄舊式密碼演算法應被隔離使用的原因將此工具用於相容性測試和遷移備註,而非新的安全設計。DES 已過時(1999 年專用機器在 22 小時內就能破解,現在的 GPU 叢集速度更快),TripleDES 也只是舊時代的遺留。現代系統應優先選用 AES-GCM 等認證加密方案,DES 的範例應清楚標註,避免被直接複製到新的安全工作中。
透過來回加解密驗證與廠商範例的一致性在整合支付終端、SIM 工具或舊版 API 時,使用合作方公開的金鑰和 IV 加密已知明文,再解密並逐位元組比對輸出。利用位元組長度計數器確認輸出符合廠商預期的 8 位元組區塊邊界,因為填充被截斷或 Base64 欄位周圍多餘的空白,是造成靜默失敗的常見原因。
在 Hex、Base64 和純文字之間切換以匹配傳輸格式將編碼選項對應到接收密文的欄位,因為只接受 Base64 的下游服務會拒絕原始 Hex,即使底層 DES 輸出完全相同。同一把金鑰以 Hex('0123456789abcdef')和 Base64('ASNFZ4mrze8=')表示時,解密結果相同——這在診斷合作方回報的「格式錯誤」問題時非常有用。

技術原理

DES 是一種 Feistel 區塊加密演算法,於 1977 年以 FIPS 46 標準發布。它以 64 位元區塊和 64 位元金鑰運作,其中 8 位元為同位元檢查位,有效金鑰素材為 56 位元。加密過程始於初始置換(IP),將 64 位元狀態分成兩個 32 位元半部 L0 和 R0,然後執行 16 輪 Feistel 迭代,形式為 (L_{i+1}, R_{i+1}) = (R_i, L_i XOR F(R_i, K_i))。輪函數 F 透過 E-box 將 32 位元擴展為 48 位元,與由 PC-1/PC-2 金鑰排程器產生的 48 位元輪金鑰 K_i 進行 XOR 運算,再套用八組 6 轉 4 位元的 S-box(S1..S8),最後執行 P-box 置換。最終置換(FP = IP^-1)產生密文。 Triple DES 定義於 NIST SP 800-67,以加密-解密-加密(EDE)結構套用三次 DES:C = E_{K3}(D_{K2}(E_{K1}(P)))。金鑰選項 1 使用三組獨立的 56 位元金鑰(168 位元原始素材,對中間相遇攻擊約有 112 位元的有效安全性);金鑰選項 2 設定 K1 = K3(約 80 位元有效安全性)。區塊加密模式將 DES/3DES 包裝起來以處理超過 64 位元的訊息:ECB 獨立加密每個區塊,會洩漏明文模式;CBC 透過 C_i = E_K(P_i XOR C_{i-1}) 以隨機 8 位元 IV 進行鏈結;CFB 和 OFB 將區塊加密轉為自同步或同步串流加密;CTR 將明文與 E_K(nonce || counter) 進行 XOR 運算。 DES 的 56 位元金鑰空間(2^56 約 7.2 x 10^16)可被窮舉:EFF DES Cracker 於 1998 年以 22 小時破解 DES 挑戰,使用的是客製化 ASIC;現代 GPU/FPGA 叢集可在數小時內完成。NIST SP 800-131A 於 2005 年淘汰單一 DES,並在 2023 年後禁止 Triple DES 用於加密;Sweet32 生日攻擊(CVE-2016-2183)進一步削弱了 TLS 中的 3DES,因為其 64 位元區塊大小使得在單一金鑰下約 2^32 個區塊(約 32 GB)後就會發生碰撞。現代系統應改用 AES-128 或 AES-256 搭配認證模式,如 GCM 或 ChaCha20-Poly1305。

  • DES 金鑰為 8 位元組含同位元(56 位元有效);3DES 金鑰為 16 位元組(2-key,約 80 位元安全性)或 24 位元組(3-key,對中間相遇攻擊約 112 位元安全性)。
  • 區塊大小為 64 位元 / 8 位元組;CBC、CFB、OFB 和 CTR 均需要 8 位元組 IV/nonce,ECB 不使用 IV(且在區塊層級洩漏模式)。
  • PKCS#7 填充附加 N 個值為 N 的位元組(1 ≤ N ≤ 8);當明文長度已為 8 的倍數時,會新增一個完整的 8 位元組 0x08 區塊。
  • 弱金鑰 0x0101010101010101、0xFEFEFEFEFEFEFEFE 以及四組半弱金鑰對會使金鑰排程中的 K1 = K2,因此 E_K = D_K——產生隨機金鑰時應避免使用。
  • Sweet32(CVE-2016-2183)利用 3DES 的 64 位元區塊:單一金鑰在約 2^32 個區塊後發生碰撞(CBC 模式下約 32 GB 明文)。
  • NIST SP 800-67 Rev. 2 於 2023 年 12 月 31 日後禁止 Triple DES 用於加密;新設計應使用 AES-GCM 或 ChaCha20-Poly1305,而非 DES 或 3DES。
  • EFF DES Cracker(Deep Crack)於 1998 年 7 月以不到 25 萬美元在 22 小時內破解 DES;現代 GPU 叢集可在數小時內完成,因此單一 DES 不是有效的機密性控制手段。

範例

DES-CBC 加密

明文: Hello World
金鑰 (hex): 0123456789abcdef
IV (hex): fedcba9876543210
模式: CBC / PKCS#7
輸出: Base64 編碼的密文

3DES 加密

演算法:Triple DES
金鑰 (hex):24 位元組(48 個 hex 字元)
模式:CBC / PKCS#7
備註:168 位元金鑰長度目前仍被視為安全,但新專案建議改用 AES

ECB 單一區塊

明文:8 位元組(剛好一個 DES 區塊)
金鑰:  0123456789abcdef
模式:  ECB / PKCS#7
備註:  ECB 僅在處理單一 8 位元組區塊時才安全;切勿用於較長的資料

常見問題

DES 現在還能安全使用嗎?

不行。純 DES 的有效金鑰只有 56 位元,1998 年就被公開破解 — 專用硬體一天內可以暴力破解,現代雲端 GPU 只需幾分鐘。NIST 已於 2005 年正式撤銷 DES。新系統請改用 AES。

那 Triple DES(3DES)呢?

3DES 用兩組或三組金鑰把 DES 套用三次,提供約 112 位元的有效安全強度。NIST 於 2017 年將 3DES 列為棄用,並在 2023 年後禁止用於新應用,原因是其 64 位元區塊大小遭遇生日界線攻擊(Sweet32)。它僅在舊系統(早期銀行與 POS 網路)中還在用 — 能升級就升級。

為什麼這個頁面還保留 DES?

因為現實世界中仍有舊系統在用。當你必須與舊銀行格式、嵌入式韌體互通,或是在做考試題目時,這個工具就派上用場。它不是建議 — 新程式碼請使用 AES。

DES 有哪些模式?分別代表什麼?

ECB 對每個區塊獨立加密,會洩露樣式。CBC 將區塊串接,需要 IV。CFB 與 OFB 把 DES 當作串流加密。CTR 使用計數器作為 nonce。對 DES 而言,若以互通為目標,建議使用 CBC + PKCS#7 填充;切勿在真實資料上使用 ECB。

DES 的區塊大小和金鑰大小是多少?

DES 區塊大小 64 位元,金鑰 64 位元,其中只有 56 位元是金鑰材料(8 位元為奇偶校驗)。三金鑰版本的 3DES 區塊仍是 64 位元 — 這也是高資料量下會踩到 Sweet32 的原因。

計算是在我的瀏覽器中完成嗎?

是的。DES 透過 JavaScript 在本機計算。金鑰與明文不會離開裝置。你可以在加解密過程中打開 Network 分頁驗證。

為什麼我的 3DES 輸出和對接系統對不上?

常見原因:金鑰奇偶位元錯誤、金鑰位元組順序不同、模式錯誤(ECB 與 CBC)、缺少或多餘的 IV、填充方式不對(PKCS#7 與 ZeroPadding),或是雙方一邊用 UTF-8、另一邊用 UTF-16 編碼輸入。除錯真實資料前,先和對方確認一組已知測試向量。