AES-256-GCM 使用一把 256 位元金鑰、一個 96 位元 IV,以及一個 128 位元驗證標籤,而金鑰則是透過 PBKDF2-SHA-256 經過 210,000 次迭代從密碼衍生而來。本速查表整理了該 AES 加密線上工具的加密參數、JSON 封包格式與操作流程,讓您在需要查詢數值、執行加密,或對解密失敗進行除錯時,無需重新閱讀完整規格說明。該工具完全透過 Web Crypto API 在當前的瀏覽器分頁中執行;明文、密碼、衍生金鑰與解密結果皆停留在頁面上,絕不會上傳至任何伺服器。每次加密都會重新要求一組 16 位元組的 salt 與一組 12 位元組的 IV,這就是為什麼相同的明文與密碼每次會產生不同的封包。解密時,若封包的密碼錯誤或位元組遭到竄改,將會被拒絕,並在不洩漏任何部分明文的情況下回報失敗。以下各節將彙整相關數值、標示 JSON 欄位、逐步說明加密與解密流程,並點出最常見的陷阱,使本頁作為一份便捷的參考資料,而不是一份教學。

AES 一覽:關鍵數值
AES 加密線上工具所使用的加密參數,遵循以 NIST SP 800-38D 發布的 AES-GCM 標準,以及 W3C Web Cryptography 規範中所定義的金鑰衍生基元。下表記錄了工具所要求的精確數值、其計量單位,以及每個數值背後的來源標準。無論您正在串接外部互通機制,或是正在為解密失敗進行除錯,請以本表為第一站,因為本速查表中的其他所有章節都會回頭參照這些常數。
| 參數 | 數值 | 來源或用途 |
|---|---|---|
| 加密演算法 | Galois/Counter 模式下的 AES-256 | NIST SP 800-38D |
| 金鑰長度 | 256 位元 | NIST SP 800-38D |
| 區塊長度 | 128 位元 | NIST SP 800-38D |
| IV 長度 | 96 位元 (12 位元組) | NIST SP 800-38D,GCM 建議值 |
| 驗證標籤 | 128 位元 | Web Crypto API 預設值 |
| KDF | PBKDF2 搭配 HMAC-SHA-256 | PKCS #5,透過 Web Crypto 使用 |
| Salt 長度 | 128 位元 (16 位元組) | Web Crypto API |
| PBKDF2 迭代次數 | 210,000 | 為瀏覽器運算成本所做的調校 |
| 密碼最低長度 | 12 個 UTF-8 位元組 | 工具的輸入驗證 |
| 編碼字母表 | 無填充的 base64url | RFC 4648,第 5 節 |
JSON 封包格式
加密輸出並非原始密文;而是一個自我描述的 JSON 物件,列出接收端解密所需的演算法、參數與 base64url 編碼欄位。此格式已加入版本控制,因此未來變更可在不破壞舊有封包的情況下遞增版本欄位。下表列出新封包中會出現的所有欄位、其數值或結構,以及簡短的用途備註,讓本章節在讀取或產出封包時也能兼作參考卡。
| 欄位 | 數值或結構 | 備註 |
|---|---|---|
| v | 1 | 格式版本。任何破壞性變更皆需遞增。 |
| alg | "AES-256-GCM" | 加密演算法宣告,於解密時進行比對。 |
| kdf | "PBKDF2-SHA-256" | 金鑰衍生函式宣告。 |
| iter | 210000 | 金鑰衍生過程中所使用的迭代次數。 |
| salt | base64url 字串 | 16 個隨機位元組;非機密。 |
| iv | base64url 字串 | 12 個隨機位元組;非機密。 |
| ct | base64url 字串 | AES-GCM 密文串接 128 位元標籤。 |
使用線上工具進行加密與解密
以下流程對應 AES 加密線上 工具的操作步驟。請將 JSON 封包與密碼分別存放於不同管道,以便即使其中一者外洩,另一者仍受到保護;並請在將輸出視為正式密文之前,先進行快速健全性檢查。
- 開啟 AES 加密線上工具,並選擇「加密」動作。
- 在訊息欄位中輸入或貼上您的明文。此工具接受瀏覽器可呈現的任何 UTF-8 字串,包括含變音符號的字元、表情符號,以及多行備註。
- 輸入一組至少 12 個 UTF-8 位元組的唯一通關密語。請從值得信賴的密碼管理員取得,切勿重複使用既有字串或易於背誦的詞組。
- 執行加密。瀏覽器將透過 PBKDF2-SHA-256、salt 與 210,000 次迭代衍生一把不可匯出的 256 位元 AES 金鑰,接著使用全新的 12 位元組 IV 與 128 位元標籤,以 AES-GCM 進行加密。
- 完整複製產生的 JSON 封包,並將其存放於將接收密文的目的地,例如檔案、聊天訊息或 API 酬載。
- 透過獨立的安全管道傳遞密碼,例如密碼管理員的分享功能、頻外訊息或口頭交換。切勿將密碼貼入與封包相同的存放位置。
- 若日後需要開啟封包,請將工具切換至「解密」,貼上未經修改的 JSON,輸入相同的密碼,然後執行解密。若密碼錯誤或任何位元組遭到竄改,驗證將失敗,不會回傳任何明文。
導致解密失敗的陷阱
大多數解密失敗是由一組可預測的小錯誤所引起。當封包無法開啟時,請將下列清單視為快速的疑難排解參考,在假設加密演算法本身損壞或密碼已遺失之前,先修正其中的問題。
- 貼上了帶填充的 Base64 字串,而非無填充的 base64url。封包使用符合 RFC 4648 且無填充的 base64url;若將其轉換為帶填充的標準 Base64,將在呼叫 Web Crypto 之前即無法通過驗證。
- 修剪空白字元是允許的,但重寫欄位名稱、刪除欄位或重新排列數值則不被允許。嚴格的驗證步驟會在嘗試驗證之前,先檢查標籤、數值限制、欄位語法,以及 salt 與 IV 的精確長度。
- 重複使用舊的 IV 或 salt 來重現封包。AES-GCM 要求每把金鑰使用唯一的 IV,因此工具每次執行都會產生全新的數值,重複使用的 IV 將會被拒絕。
- 選擇過短或重複使用的密碼。PBKDF2 能提高猜測的成本,但無法將外洩或低熵的通關密語轉化為強密碼,因此保護下限取決於密碼品質,而非迭代次數。
- 將密碼貼入與封包相同的管道。一旦兩者經由相同的管道外洩,不論底層使用何種加密演算法,加密都將無法提供實質的機密性。
- 將此工具視為代管式的密碼保管庫。本工具沒有帳號、沒有還原機制,也沒有託管機制;密碼一旦遺失,封包即將消失,這是設計上的考量。
線上 AES 工具的適用情境與不適用情境
AES 加密線上工具專為小型文字片段、受控交換、展示,以及需要雙方約定採用此特定 JSON 封包格式的相容性測試而設計。它非常適合用於透過支援程式碼區塊的聊天服務傳送一次性秘密、在支援單據中附加加密備註、與參考實作進行行為比對,或是用於教學示範 AES-GCM 封包在實務中的配置方式。當外部系統必須重現相同的輸出時,本工具亦有所助益:只要該系統在 UTF-8 處理、PBKDF2 參數、AES-GCM 標籤位置、base64url 編碼與 JSON 欄位格式上與本工具一致,即可在無需任何伺服器端金鑰管理的情況下,與此處產生的封包互通。
本工具無法取代代管式保管庫、企業金鑰管理服務,或經過審核的應用層級加密設計。瀏覽器擴充功能、受感染的裝置、剪貼簿管理程式、螢幕擷取功能,以及共用電腦皆處於密碼學邊界之外,因此當周邊裝置不被信任時,應清除敏感內容並關閉分頁。對於大型檔案、受法規規範的資料,或長期保存的秘密的靜態加密,請使用具備稽核儲存、硬體背書金鑰與書面還原程序的專用系統。請將本速查表視為上述參數與流程的快速查閱參考;若需要安全審查的正式措辭,請參閱底層的 NIST 與 W3C 規範。
若您正在權衡各種選項,ASCII 碼轉換速查表:十進位快速參考對此有詳細說明。
若您正在權衡各種選項,Base64 轉十六進位速查表:RFC 4648 快速參考對此有詳細說明。