文字加密 / 解密
使用 AES-256-GCM 直接在瀏覽器中加密或解密文字。資料不會離開您的裝置。
文字加密 / 解密
輸入文字和密碼後,點擊「加密」或「解密」。
OpenSSL 命令參考(AES-256-CBC)
您也可以使用 OpenSSL 在命令列中加密和解密文字。以下命令使用 AES-256-CBC,並透過 PBKDF2 派生金鑰(100,000 次迭代,SHA-256)。
請將 待加密文字 替換為要加密的文字,將 你的密碼 替換為您設定的密碼。解密時,請將 密文Base64 替換為加密命令輸出的 Base64 字串。
加密
printf '%s' '待加密文字' | openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -pass pass:'你的密碼' -a
解密
echo '密文Base64' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 -pass pass:'你的密碼' -a
為什麼結果不同?
上方網頁工具使用 AES-256-GCM(驗證式加密),而 OpenSSL 命令使用 AES-256-CBC,因為 openssl enc 不支援 GCM 模式。這兩種演算法產生的輸出格式完全不同,因此無法用本網頁工具解密 OpenSSL 輸出的結果,反之亦然。不過,兩種方式都使用相同參數的 PBKDF2 來派生加密金鑰(SHA-256、100,000 次迭代)。
如何使用這個工具
在「明文」欄位中輸入或貼上要保護的文字,設定一組強密碼,然後點擊「加密」。工具會回傳一段 Base64 編碼字串,其中已打包解密所需的全部內容,包括鹽值、IV、驗證標籤與密文。
若要還原內容,請切換到「解密」模式,貼上 Base64 字串,輸入相同的密碼,然後點擊「解密」。如果密碼正確且資料未被竄改,原始明文會立即顯示。
AES-256-GCM 有多強?
只要密碼沒有遺失,在不知道密碼的情況下幾乎不可能還原明文,即使使用非常強大的電腦也是如此。AES-256 的金鑰空間為 ,這代表暴力窮舉遠遠超出現有與可預見技術的能力範圍。再搭配 PBKDF2 金鑰延展(100 000 次迭代),隨意猜測密碼同樣並不實際。
不過,弱密碼或重複使用的密碼會大幅削弱這個優勢。請務必使用強且唯一的密碼片語。
什麼是對稱式加密?
對稱式加密在加密與解密時使用同一把金鑰(由您的密碼派生而來)。和需要公鑰/私鑰配對的非對稱式加密不同,對稱式方案簡單且快速,因此特別適合在雙方共享秘密時保護靜態資料或傳輸中的資料。
為什麼使用 AES-256-GCM?
- 驗證式加密:GCM(Galois/Counter Mode,伽羅瓦/計數器模式)能在一次操作中同時提供機密性與完整性。就算密文只改動 1 個 bit,解密也會因驗證失敗而直接中止,而不是輸出亂碼。
- 廣泛可信:AES-256 是政府、金融機構與全球安全關鍵軟體廣泛採用的加密標準。
- 業界標準:它是 TLS 1.3 的預設密碼套件之一,受到 NIST 推薦,並透過 Web Crypto API 獲得各大平台原生支援。
因為這個工具只使用一種固定演算法,所以您不需要擔心加密端與解密端出現演算法不相容的問題。
加密 / 解密流程如何運作
- 金鑰派生(PBKDF2) — 您的密碼不會直接當作加密金鑰使用。系統會將它與一個隨機產生的 16 位元組鹽值一起送入 PBKDF2,並執行 100 000 次 SHA-256 迭代。輸出結果是一把 256 位元金鑰,只靠密碼本身幾乎無法反向推導。
- 加密 — 系統會產生一個隨機的 12 位元組 IV(初始化向量)。接著,AES-256-GCM 會使用派生出的金鑰與 IV 對明文進行加密,產生密文以及一個在解密時會驗證的 16 位元組驗證標籤。
- 打包 — 鹽值、IV、驗證標籤與密文會依序串接,並編碼成單一 Base64 字串。這代表接收方只需要密碼,其餘資訊都已內嵌在輸出結果中。
- 解密 — Base64 字串會先被解碼,再拆回鹽值、IV、標籤與密文。PBKDF2 會根據密碼與鹽值重新派生出同一把金鑰,接著由 AES-256-GCM 解密資料。如果標籤驗證失敗,操作會立即中止,這能同時防止密碼錯誤與密文遭竄改的情況。
隱私說明
所有處理都完全在您的瀏覽器內進行。明文、密碼與密文都不會傳送到任何伺服器。您可以打開瀏覽器的網路檢視器自行驗證,在加密或解密過程中不會有任何對外請求。
作為參考,結果區域也提供了使用相同密碼與迭代次數執行 AES-256-CBC 加密的 OpenSSL 命令。這些命令是為了方便您體驗本機命令列加密,但其輸出不能由本工具解密,反過來也一樣。兩者之所以不相容,主要有以下兩個原因:
- 密碼模式不同 — 本工具使用 AES-256-GCM(驗證式加密)。
openssl enc工具不支援 GCM 模式,因此這些命令改用 AES-256-CBC,而後者沒有內建的驗證標籤。
- 二進位格式不同 — 本工具會將輸出打包為
salt(16 位元組)+ IV(12 位元組)+ auth tag(16 位元組)+ ciphertext,再進行 Base64 編碼。OpenSSL 則使用自己的Salted__標頭格式,鹽值只有 8 位元組,也沒有驗證標籤。
正因為這些差異,這裡產生的任何密文都只能在這裡解密,而這些 OpenSSL 命令產生的任何密文也只能透過對應的 openssl enc -d 命令解密。