xor encryption online for beginners
XOR 加密線上工具入門:實務指南

XOR 加密線上工具實際做了什麼

XOR 加密線上工具對 UTF-8 文字套用重複金鑰的互斥或運算,產生可還原的密文,你可以複製成十六進位或 Base64,並用同一把金鑰還原。對初學者來說概念很簡單:明文的每個位元組會與金鑰的一個位元組透過 XOR(互斥或)結合,這是一種位元運算,只有當輸入位元不同時才會回傳 1;而當訊息比金鑰長時,金鑰會從頭重複。由於 XOR 是自身的反函數,再次以同一把金鑰執行相同運算即可還原原始位元組,這也是為什麼同一個工具可以同時加密和解密。XOR 加密線上工具完全在你的瀏覽器中執行,同時提供同一份位元組的十六進位與 Base64 表示法,並在解密時驗證 UTF-8,讓你快速察覺金鑰錯誤。

工具所使用的慣例刻意明確,讓不同電腦上的兩個使用者能得到相同結果。明文與金鑰皆以 UTF-8 編碼。每個明文位元組與對應的金鑰位元組進行 XOR,當輸入比金鑰長時,金鑰從位置零重新開始。這種重複模式正是「重複金鑰 XOR」名稱的由來。切換輸出格式並不會改變底層的密文;十六進位與 Base64 只是表示同一段位元組序列的兩種方式。

為什麼這個工具適合初學者

XOR 加密線上工具的設計重點是清晰易懂,而非密碼學強度,因此非常適合第一次接觸這個概念的人。它完全在瀏覽器中執行,所以你的訊息、金鑰或輸出內容都不會上傳到任何伺服器。你可以同時看到同一份結果的十六進位與 Base64 表示法,無需猜測收件方預期哪一種。介面會強制你在解密時選擇對應的表示法,避免初學者常犯的錯誤——把十六進位位元組貼到預期接收 Base64 的欄位。

這個工具也設有防止靜默混淆的限制。空白的輸入或空白金鑰會被拒絕,而不會產生沒有意義的結果。解密時執行嚴格的 UTF-8 驗證,因此錯誤的金鑰產生無效位元組序列時,會以明確的錯誤呈現,而不是悄悄替換成替代字元。輸入與金鑰資料的上限為 100,000 位元組,即使是非常長的訊息,頁面仍能保持流暢。這些設計選擇讓你花較少時間猜測工具是否壞了,而能更專注於理解 XOR 實際的運作。

使用 XOR 加密線上工具加密訊息

依照以下步驟,使用重複金鑰從任何 UTF-8 明文產生可還原的密文。

  1. 在瀏覽器中開啟 XOR 加密線上工具。
  2. 在頁面頂端選擇加密模式。
  3. 在訊息欄位中輸入或貼上你的明文。文字會被視為 UTF-8,因此表情符號、變音符號及非拉丁字母皆可使用。
  4. 在金鑰欄位中輸入重複金鑰。請使用你打算分享的精確字元,包含大小寫與空格。
  5. 執行本機的 XOR 轉換。頁面會使用瀏覽器的 TextEncoder 將兩個輸入編碼為 UTF-8 位元組,再依標準的 位元 XOR 規則,將每個明文位元組與 keyBytes[index modulo keyLength] 進行 XOR。
  6. 複製你打算發送的十六進位或 Base64 表示法。兩者都會顯示,讓你可以任選其一。
  7. 告訴收件方你使用的是哪種表示法,並提供完全相同的金鑰文字,逐字元一致。

操作範例。明文「Hi」搭配金鑰「k」。UTF-8 位元組為 'H' = 0x48、'i' = 0x69、'k' = 0x6B。位元組 0:0x48 XOR 0x6B = 0x23。位元組 1:0x69 XOR 0x6B = 0x02。密文即兩個位元組的序列 0x23 0x02,寫成四字元的十六進位字串為 2302,Base64 字串為 IwI=。

使用同一個工具解密訊息

解密使用同一頁面但切換到不同模式。雙方必須對金鑰文字與密文的表示法達成完全一致,否則還原出的位元組將無法對應原始明文。

  1. 開啟 XOR 加密線上工具。
  2. 將頁面切換到解密模式。
  3. 選擇與所收到內容對應的表示法,十六進位或 Base64。
  4. 將密文貼入對應的輸入欄位。頁面以嚴格方式解析:十六進位必須包含完整的位元組配對且僅含十六進位數字(忽略空白);Base64 則須使用標準字母集並加上正確的填充。
  5. 輸入完全相同的金鑰,逐字元一致,包含大小寫與空格。
  6. 讀取還原後的明文。如果結果看起來像亂碼符號,或頁面回報 UTF-8 解碼錯誤,金鑰幾乎可以確定是錯的。
  7. 透過第二個管道確認明文的意義。成功的 UTF-8 解碼只能證明位元組構成有效字元,無法證明你用了正確的金鑰,因為某些錯誤的位元組序列恰好會落在有效字元上,特別是在簡短的 ASCII 訊息中。

同一段位元組序列也可以透過任何遵循相同 UTF-8 加重複金鑰慣例的工具正確解密。如果你與命令列程式或程式設計函式庫比對結果卻出現差異,最常見的原因是金鑰慣例不同。另一個工具可能將金鑰視為十六進位位元組、以 UTF-16 碼元運作,或採用不同的重複規則,這些都會讓同一可見金鑰產生不同的密文。

十六進位或 Base64:應該發送哪一種格式

兩種表示法編碼的是完全相同的位元組。差異只在於位元組序列的書寫方式,這在你把密文複製到聊天軟體、電子郵件、程式碼檔案或論壇文章時很重要。

面向十六進位Base64
使用的字元0-9 與 a-f(小寫)A-Z、a-z、0-9、+、/ 與 = 填充
輸出長度每個位元組兩個字元(較長)每個位元組約 1.33 個字元(較短)
適用情境檢查個別位元組、除錯、嵌入程式碼註解在文字欄位、URL 與 JSON 中傳遞密文
嚴格解析規則完整的位元組配對、僅含十六進位數字、忽略空白標準字母集、正確的填充
人可讀性易於計算並分割為位元組較短,較難以手動編輯

當你想要檢查或比對個別位元組、當收件方是將密文貼到指令稿的開發者、或接收端的系統已記載使用十六進位介面時,請選擇十六進位。當密文必須塞進文字欄位、URL 參數或 JSON 酬載,或是你只是想要一段較短、方便複製貼上的字串時,請選擇 Base64。XOR 密文本身並未改變,只有表示法不同。若想進一步了解這兩種格式與金鑰慣例,請參考 XOR 加密線上工具:格式與金鑰速查表。

為什麼金鑰與編碼細節很重要

有三個細節經常困擾初學者,值得在送出第一則正式訊息前牢記。第一,金鑰欄位會被視為 UTF-8 文字,而不是十六進位位元組。金鑰詞彙「key」會變成三個 UTF-8 位元組 6B 65 79,而不是單一位元組 0x6B。如果你輸入可見字串「6B6579」,工具會改用六個 ASCII 位元組 36 42 36 35 37 39。這也是與命令列工具和密碼學函式庫結果不符的常見原因。

第二,金鑰用盡時會從頭重新開始,因此兩字元的金鑰用於十字元的訊息時,會依序循環位置 0、1、0、1、0、1、0、1、0、1。由於 Unicode 文字可能一個可見字元佔用多個位元組,表情符號及許多非拉丁字母會讓每個字符消耗多個金鑰位置。這個工具是對 UTF-8 位元組進行 XOR,而不是 JavaScript 的 UTF-16 碼元或使用者感知的字素叢集,這個慣例確保結果在符合標準的瀏覽器間具有可重現性。

第三,明文中的空白字元是有意義的。如果你的明文含有尾端空格或換行,該空白屬於輸入的一部分,會產生不同的密文。另一方面,編碼後密文中的空白在解析時會被忽略,這正是你可以貼上含有以空格分隔的位元組配對十六進位字串的原因。除此之外,不會再做清理、大小寫轉換或猜測,因此你輸入的內容就是工具實際看到的內容。

重複金鑰 XOR 能做與不能做的事

重複金鑰 XOR 是一種可還原的轉換,因此非常適合用於學習、互通性檢查,以及像是搶旗賽(CTF)之類的解題活動。你可以使用同一個 XOR 加密線上工具商定金鑰、加密訊息、以十六進位或 Base64 送出結果,並讓收件方還原明文。由於頁面不會上傳任何內容,訊息全程都保留在你的裝置上。

它並非現代加密,工具對此也直言不諱。它沒有校驗碼、沒有驗證標籤、沒有加鹽、沒有 nonce、沒有密碼延伸,也沒有金鑰管理。重複金鑰會暴露讓密文更容易分析的規律。已知明文可能洩漏金鑰位元組。短金鑰尤其脆弱。攻擊者若能竄改密文,由於沒有完整性檢查,可以不被察覺。這個工具在自身的警告中會說明這些限制,熟悉的加密標籤並不代表重複金鑰 XOR 能提供的保護。如需深入討論這些限制,請參考 XOR 加密安全嗎?重複金鑰的現實檢驗。

請勿使用這個頁面來保護密碼、個人紀錄、付款明細、私鑰,或任何涉及機密性或完整性的資訊。若需要真正的安全性,請選擇經審核的認證加密機制來妥善處理金鑰,例如 AES 加密線上工具 所提供的 AES-256-GCM 套件,並且絕對不要將聊天軟體的金鑰重複用於敏感用途。請將重複金鑰 XOR 視為它本質上的用途:一種教學工具與可還原的解題格式,而非隱私機制。