填充屬於模式的訊息處理規則
AES 分組大小為 16 位元組。CBC 需要完整分組,本工具採用 PKCS7;GCM 與 CTR 不需要 PKCS7 就能處理最後的不完整分組。不要因為其他庫的介面有填充選項,就在所有模式上增加填充。
密碼模式固定 GCM,沒有 PKCS7。原始 CBC 明確使用 PKCS7;目標如果使用零填充或不填充,並不會自動與本工具相容。
位元組級例子
13 位元組訊息的 PKCS7 會追加三個值為 03 的位元組,形成 16 位元組分組。如果原文已正好 16 位元組,則追加整組十六個十六進位制 10 位元組值,使去除填充有明確定義。
原始 CBC 輸入 abc 為三個 UTF-8 位元組,會在加密前自動追加十三個 0d。正確解密並移除 PKCS7 後還原原來的三個位元組。不要在編輯器裡手動再加一遍填充。
報錯能說明什麼
錯誤金鑰、IV、模式、密文變化和不同填充約定都可能報錯;錯誤不會指出唯一原因。錯誤金鑰得到的隨機位元組也偶爾可能碰巧符合填充,所以移除成功不等於明文通過認證。
GCM 的失敗是認證不匹配,不釋放明文。不要把損壞的 GCM 包切換到 CBC 來繞過保護。CTR 沒有填充校驗,可能直接返回位元組,同樣不能證明完整性。
不要靠刪改原文排錯
確認密文解碼正確、CBC IV 為 16 位元組、金鑰長度與選項一致,並保留原訊息所需的尾部換行。如果對方使用另一填充約定,應使用對應實作,不要自行刪零或猜測該丟棄多少明文。
相關工具與閱讀
技術參考
更新於 2026 年 10 月 16 日