AES Encryption Online 是一個在本機瀏覽器中執行的替代方案,使用 AES-256-GCM 將任何文字包裝成一個自包含的 JSON 套件,只有使用相同的密碼才能解密,並透過 128 位元驗證標籤進行驗證。每次加密執行都會產生全新的隨機值,使用 PBKDF2-SHA-256 以 210,000 次迭代衍生 AES 金鑰,並為套件加上標籤,以便在嘗試解密之前進行驗證。明文、密碼、衍生金鑰以及還原後的文字絕不會離開當前頁面;Web Crypto API 會在使用者的裝置上完成所有運作,且此工具絕不會連線到遠端後端。套件本身是一個可攜的 JSON 文件,收件者可以複製、儲存,或透過任何文字管道傳送,然後在本機使用相同的密碼重新開啟。作為一個替代方案,相較於那些將密文上傳到伺服器、隱藏其演算法、或是在相同明文與密碼下悄悄產生可預測密文的網頁應用程式,本工具讓加密邊界變得明確且可稽核。

大多數線上 AES 加密工具透過其伺服器傳送了什麼
搜尋「AES encryption online alternative」的人通常已經試過標準的網頁工具,並注意到一些令人不安的地方。典型的網站會接收明文與密碼,將兩者都傳送到伺服器,使用未公開說明的演算法與參數執行 AES,然後回傳可能與未來解密嘗試相符也可能不相符的 base64 密文。伺服器可能會記錄請求、進行限流、事後才回傳錯誤,或在兩次造訪之間悄悄更改設定。加密邊界是不透明的,威脅模型完全取決於網站經營者,而使用者無法確認究竟加密了哪些位元組。
同樣常見的是,有些工具標榜「AES-256 加密」,但實際上使用 ECB 模式、靜態 IV、或僅以單輪 MD5 為基礎的金鑰衍生,然後每次針對相同的明文與密碼產生完全相同的密文。可預測的輸出是一個明顯的跡象:它告訴攔截到兩個套件的觀察者,這些訊息內容相同;它也告訴嘗試猜測密碼的人,某個候選密碼產生了預期的位元組。AES-256 的強度僅與其周圍的選擇一樣強,而許多公開工具做出在失敗之前都看不到的薄弱選擇。
大多數讀者真正想從一個替代方案中獲得的,是一個在本機執行 AES 基本運算、每次執行都挑選全新隨機值、使用有書面記錄的慢速函式衍生金鑰、附加驗證標籤以便偵測竄改、並公開套件格式讓任何人都能稽核的工具。這就是本指南所要探討的落差。
本機執行的 AES Encryption Online 替代方案一覽
本指南的核心工具是 AES Encryption Online 頁面。它透過瀏覽器的 Web Crypto API 執行,絕不會將明文、密碼、衍生金鑰或解密結果上傳到任何地方。加密使用 256 位元金鑰的 AES,採 Galois/Counter Mode(GCM),這是 NIST SP 800-38D 所標準化的驗證加密模式。每次呼叫都會請求一個全新的 16 位元組隨機 salt 與全新的 12 位元組隨機 IV,使用 PBKDF2 搭配 SHA-256 以 210,000 次迭代從使用者密碼衍生 AES 金鑰,加密 UTF-8 明文,並產生 128 位元的 GCM 驗證標籤。
輸出是一個單一的 JSON 套件,宣告版本 1、演算法標籤(AES-256-GCM、PBKDF2-SHA-256)、迭代次數,以及 salt、IV 和驗證密文的 base64url 欄位。該套件是可攜的:可以貼到電子郵件中、儲存為檔案,或透過任何文字管道傳送。作為隱藏內部實作的網頁應用程式的替代方案,此版面配置是公開的、版本化的,並在嘗試解密之前逐欄位進行驗證。密碼絕不會寫入輸出中,沒有任何還原或託管機制,且此工具沒有帳號系統、伺服器金鑰儲存區或稽核記錄。
將文字加密為可攜的 AES-256-GCM JSON 套件
以下是使用 AES Encryption Online 替代方案產生可攜加密套件的精確步驟:
- 在瀏覽器中開啟 AES Encryption Online 工具,並選擇 Encrypt 模式。
- 在輸入區域中輸入或貼上明文;該工具會將其視為 UTF-8 位元組處理。
- 選擇一個至少 12 個 UTF-8 位元組的唯一密碼,並將其輸入密碼欄位。強烈建議使用來自信任密碼管理工具的較長密碼短語。
- 執行加密。瀏覽器會透過 PBKDF2-SHA-256 以 210,000 次迭代與全新的 16 位元組隨機 salt 衍生出一個不可匯出的 AES-256 金鑰,然後使用全新的 12 位元組隨機 IV 與 128 位元驗證標籤,透過 AES-256-GCM 進行加密。
- 從輸出區域複製完整的 JSON 套件。不要將密碼放在同一個管道中;該套件並不能取代保護密碼短語的措施。
- 透過您選擇的管道將套件傳送給收件者,並透過另一個管道單獨傳遞密碼,最好是親自交付、透過不同的通訊軟體,或透過密碼管理工具的分享功能。
傳送前請勿編輯套件。移除欄位、將 base64url 替換為帶填充的 Base64、或修剪空白字元,都可能導致收件端驗證失敗,該工具會拒絕處理而不是進行猜測。
解密套件並識別竄改嘗試
解密以相反方向執行相同的邊界,並加上賦予 AES-GCM「驗證加密」之名的驗證檢查。使用 AES Encryption Online 替代方案開啟套件的方式如下:
- 將工具切換到 Decrypt 模式。
- 將完整的 JSON 套件原樣貼上,不要重新編碼、美化或修復它。
- 透過傳送者用來交付密碼的同一管道輸入密碼。
- 執行解密。該工具會在要求 Web Crypto 進行驗證與解密之前,先驗證版本標籤、演算法標籤、迭代次數、欄位語法、精確的 16 位元組 salt 長度、精確的 12 位元組 IV 長度,以及最小密文長度。
- 如果密碼錯誤或套件的任何位元組被修改,AES-GCM 驗證將會失敗,該工具會回報錯誤,而不是回傳部分或猜測的明文。沒有備用的解密模式。
- 如果驗證成功,原始的 UTF-8 明文會出現在輸出區域中,並可加以複製。完成後請關閉分頁並清除剪貼簿,尤其是在共用或可能遭到入侵的裝置上。
驗證標籤是「如何得知套件在傳輸過程中未被編輯」這個問題的實際答案。密文中翻轉的一個位元、被替換的 IV、或錯誤的密碼,都會觸發同一條失敗路徑,而同一個套件會被拒絕。
加密組成要素與套件版面配置
對於希望在信任該套件之前先進行稽核的讀者,該 JSON 文件遵循固定的結構描述。下表摘要列出每個欄位、該工具所預期的類型與大小,以及該欄位的用途。
| 欄位 | 類型 | 值或大小 | 用途 |
|---|---|---|---|
| v | integer | 1 | 套件版本,於解密時檢查。 |
| alg | string | AES-256-GCM | 加密與模式標籤。 |
| kdf | string | PBKDF2-SHA-256 | 金鑰衍生函式標籤。 |
| iter | integer | 210000 | PBKDF2 迭代次數。 |
| salt | base64url | 16 個原始位元組 | PBKDF2 salt,以明文儲存。 |
| iv | base64url | 12 個原始位元組 | GCM 初始化向量,以明文儲存。 |
| ct | base64url | 密文加上 128 位元標籤 | 附加 GCM 標籤的驗證密文。 |
base64url 編碼遵循 RFC 4648,使用 URL 安全字母且不帶填充。在要求 Web Crypto 執行解密之前,該工具會驗證每個標籤、精確的 salt 與 IV 長度,以及最小密文長度。AES-256 金鑰經衍生但從不匯出;它僅在瀏覽器內的加密或解密呼叫期間存在。
實作會根據 NIST AES-GCM 測試向量進行檢查,包括空明文驗證案例與全零區塊加密案例。Base64url 測試資料遵循 RFC 4648,而 AES-GCM、PBKDF2、金鑰匯入、衍生、加密與解密則遵循 W3C Web Cryptography 規格。這些檢查確認了轉換與套件不變數是正確的;它們並不認證瀏覽器、裝置、密碼選擇,或套件離開頁面後的儲存位置。
加密組成要素是標準化的,但周圍的 JSON 版面配置並非通用的檔案格式。另一個系統只有在重現完全相同的 UTF-8 處理、PBKDF2 參數、AES-GCM 標籤位置、base64url 字母,以及上述欄位名稱時,才能互通。產生傳統帶填充 Base64、或將標籤與密文分開的工具將無法在此通過驗證,而本工具也不會驗證它們的套件。
此替代方案適用與不適用的場景
一個在本機執行、搭配驗證 JSON 套件的 AES-256-GCM 工具,適用於需要透過不安全管道傳輸的小段文字、展示用途、不同實作之間的相容性實驗,以及雙方都知道密碼但都不信任網路的受控交換。它作為可攜標準也很有用:任何擁有瀏覽器的人都可以開啟該套件,讀取宣告的演算法、迭代次數與欄位版面配置,而無需安裝軟體。
它並非受管理的保存庫、企業金鑰管理服務、加密備份系統,也無法取代經過審查的應用程式層級加密設計。沒有密碼還原、沒有託管、沒有帳號備份,也沒有伺服器端金鑰儲存區。210,000 次 PBKDF2 迭代提高了猜測的成本,但無法將一個過短、重複使用、已外洩或可預測的密碼變成一個強密碼;密碼仍然必須足夠長、唯一,並儲存在攻擊者無法觸及的地方。
位於加密邊界之外的威脅仍然適用。瀏覽器擴充功能、遭到入侵的裝置、剪貼簿管理工具、螢幕擷取、共用電腦,以及解密後明文所貼上的目的地,都是威脅模型的一部分。請清除敏感內容、關閉分頁,並將套件本身視為機密,即使其 salt 與 IV 並非秘密。如需深入閱讀關於驗證套件設計的內容,Inside an Authenticated GCM Package 指南會更詳細地說明相同的欄位。
相關閱讀:ASCII Code Converter API Alternative That Runs Locally。