Toolonit
  1. 首頁
  2. 加密
  3. 加密 / 解密
  4. ChaCha20

ChaCha20 加密與解密

以 ChaCha20-Poly1305 或純 ChaCha20 加密與解密文字。

加密方式

解密時還需要它。輸入的任何內容都不會離開這個頁面。

PBKDF2 迭代次數

OpenSSL 的預設值是 10,000。任何次數都可以:次數越多,密碼越難猜;解密時需要相同的次數。

模式

認證加密:能偵測錯誤的密碼或金鑰,以及文字的任何變動。

輸出格式
用 OpenSSL 執行相同操作

OpenSSL 的 enc 指令無法讀取 ChaCha20-Poly1305。請在這裡解密,或用程式碼搭配加密函式庫解密:16 位元組的標籤接在密文之後。

ChaCha20-Poly1305(RFC 8439)是 TLS 1.3 與 WireGuard 使用的認證加密法:它能加密文字,也能偵測文字的任何變動或錯誤的密碼。在這裡可以用密碼或自訂的 256 位元金鑰與 12 位元組 nonce 加密文字,或貼上 Base64 或十六進位的密文進行解密。使用密碼時,金鑰與 nonce 由 PBKDF2-HMAC-SHA256 搭配隨機鹽值推導,與 openssl enc -pbkdf2 相同;輸出依序為 Salted__、鹽值、密文與 16 位元組的 Poly1305 標籤。不含標籤的純 ChaCha20 也有提供,格式與 OpenSSL 的 chacha20 相同。你的文字、密碼與金鑰都不會離開你的裝置:全部在瀏覽器中執行,免費、免註冊。

如何用 ChaCha20-Poly1305 加密文字

  1. 選擇「加密」或「解密」。輸入要加密的文字,或貼上要解密的 Base64 或十六進位文字——格式會自動偵測。
  2. 輸入密碼(「產生」可建立高強度密碼),或切換到「金鑰與 IV(hex)」,輸入或產生 64 位數的金鑰與 24 位數的 nonce(純 ChaCha20 則為 32 位數的 IV)。
  3. 保留 ChaCha20-Poly1305,或選擇 ChaCha20 以配合 openssl enc -chacha20。解密時,請使用與加密時相同的模式、密碼與迭代次數。
  4. 複製或下載結果,或按「交換」把結果移到輸入欄,再解密一次來確認。

功能

  • 依 RFC 8439 的 ChaCha20-Poly1305:256 位元金鑰、12 位元組 nonce、16 位元組標籤
  • OpenSSL 格式的純 ChaCha20:16 位元組 IV,由 4 位元組小端序計數器與 12 位元組 nonce 組成
  • 密碼模式:金鑰與 nonce 由 PBKDF2-HMAC-SHA256 搭配隨機鹽值推導,前面加上 openssl enc -pbkdf2 的 Salted__ 標頭
  • 金鑰與 IV 模式:使用自己的十六進位金鑰與 nonce,或以「產生」建立隨機值
  • 使用 Poly1305 時,密碼或金鑰錯誤、或只改了一個字元,解密就會失敗,而不是傳回亂碼
  • 不需填充:密文長度與文字相同,使用 Poly1305 時再加上 16 位元組標籤
  • 純 ChaCha20 會顯示 openssl enc -chacha20 指令

隱私安全嗎?

是的。ChaCha20 在瀏覽器內以 WebAssembly 執行,密碼則由瀏覽器的 Web Crypto 進行延展。你輸入的任何內容——文字、密碼、金鑰或 nonce——都不會上傳或儲存。

常見問題

ChaCha20-Poly1305 還是純 ChaCha20?

任何新用途都請用預設的 ChaCha20-Poly1305:只要有一個字元被修改或密碼錯誤,它的 Poly1305 標籤就會讓解密失敗。純 ChaCha20 只負責加密——金鑰錯誤時會得到無法閱讀的位元組,而不是錯誤訊息——所以只在需要配合使用它的系統(例如 openssl enc -chacha20)時才使用。

OpenSSL 可以解密嗎?

純 ChaCha20 可以:密碼模式用 echo 'U2FsdGVkX1…' | openssl enc -d -chacha20 -pbkdf2 -iter 10000 -a -A;金鑰與 IV 模式則以 -K <金鑰 hex> -iv <IV hex> 取代 -pbkdf2 -iter。ChaCha20-Poly1305 不行:openssl enc 不接受 AEAD 加密法。請在這裡讀取,或用程式碼讀取:在金鑰與 IV 模式中,輸出就是密文後面接著 16 位元組的標籤,沒有標頭。

重複使用 nonce 會怎樣?

以相同金鑰與 nonce 加密的兩則訊息,會洩漏兩段文字的 XOR 結果,也讓攻擊者能偽造 Poly1305 標籤。在密碼模式中不會犯這種錯:每次加密都會選用新的隨機鹽值,所以金鑰、nonce 與輸出每次都是新的。在金鑰與 IV 模式中,每則訊息加密前都請按「產生」建立新的 nonce。

ChaCha20 和 AES 一樣安全嗎?

一樣安全。ChaCha20-Poly1305 與 AES-GCM 都是 TLS 1.3 的標準加密法,都沒有實際可行的攻擊方式;在沒有 AES 硬體加速的手機上,ChaCha20 通常更快。弱點在於密碼:請使用又長又隨機的密碼,並在兩端都由你掌控時,選擇 600,000 次迭代的設定。

支援 XChaCha20-Poly1305 嗎?

不支援。XChaCha20 是 libsodium 中使用 24 位元組 nonce 的變體,構造不同,所以它的密文無法在這裡解密。本頁接受 RFC 8439 的 12 位元組 nonce 與 OpenSSL 的 16 位元組 chacha20 IV。若要加密檔案而不是文字,「檔案加密」工具會以 age 格式使用 ChaCha20-Poly1305。

相關工具