XOR Encryption Online 是一款僅在瀏覽器中運作的替代方案,可取代命令列 XOR 腳本、線上 XOR API 以及可下載的桌面工具,它對 UTF-8 文字套用重複金鑰的 XOR 轉換,並以十六進位與 Base64 形式回傳相同的密文,全程無需上傳任何位元組。它完全在頁面上執行,使用標準的 TextEncoder 與位元 XOR 運算子,因此明文、金鑰與結果絕不會離開目前分頁。加密與解密模式皆接受明確的 UTF-8 金鑰,嚴格依照所選方向解析十六進位或 Base64,並在金鑰不符導致位元組無法以有效 UTF-8 解碼時明確失敗。輸入與金鑰上限為 100,000 位元組,以維持轉換的流暢度,且頁面會拒絕空訊息或空金鑰,讓你隨時能確認文字是否已被處理。這項慣例 —— UTF-8 輸入、以位元組重複 XOR、相同密文呈現一致 —— 正是此工具能與任何遵循相同規則的程式碼路徑互通的原因,也是最初尋找替代方案的核心意義。
當搜尋「替代方案」時,讀者通常想擺脫以下三種情境之一:需要帳號的伺服器、需要安裝的腳本,或是悄悄上傳訊息與金鑰的線上服務。這些取捨各自有其理由,但一個在本地端執行加密的瀏覽器頁面,能一次同時去除上傳步驟與維護步驟。接下來的章節將逐步說明 XOR Encryption Online 的使用方式、如何執行一次乾淨的加密與解密往返流程,以及其限制所在。

為何瀏覽器 XOR 工具可作為真正的替代方案
「替代」一詞唯有在替換對象確實超越原本痛點時才有意義。就 XOR 工具而言,使用者論壇中常見的抱怨大致可歸納為幾類:必須以十六進位輸入的隱晦金鑰、在非 ASCII 字元上當機的命令列封裝程式、將訊息傳送至遠端伺服器的線上表單,以及無人使用的輸出格式。一個有用的替代方案必須一次解決上述所有問題,而這份簡短的檢查清單列出在轉換前值得確認的條件。
- 本地端執行。加密作業於頁面內執行,而非呼叫 API,因此訊息與金鑰絕不會跨越網路傳送。
- 全程 UTF-8。明文與金鑰皆以 Unicode 文字輸入,並在執行任何 XOR 之前以 TextEncoder 編碼,避免出現「Hi」在 16 位元腳本中產生不同位元組的意外情況。
- 明確的位元組層級慣例。金鑰以文字形式處理,金鑰位元組會重複使用,且頁面會說明 Unicode 字元可能佔用多個金鑰位置。
- 兩種誠實的表示方式。加密後同時顯示十六進位與 Base64,方便接收端依其需求擇一使用,並保證切換格式不會改變底層位元組。
- 嚴謹且定義明確的錯誤。格式錯誤的十六進位或 Base64、空金鑰或 UTF-8 解碼失敗皆會以明確訊息中止,而不會以 U+FFFD 取代字元替代。
- 合理的容量限制。輸入與金鑰的 100,000 位元組上限,即使在較舊的筆電上也能維持轉換、渲染與複製步驟的流暢。
這些正是同類別其他文字編碼頁面所採用的基準特性,也是本文在進行任何比較時反覆回顧的重點。XOR Encryption Online 之所以獲得「替代方案」之標籤,在於它在單一頁面中完整提供上述所有特性,無需註冊、無需安裝,也無任何隱藏的上傳步驟。
在瀏覽器中執行重複金鑰 XOR 工作階段
加密路徑與解密路徑刻意精簡,且彼此對稱。請將順序視為檢查清單:先格式、再內容、最後金鑰。
- 開啟 XOR Encryption Online,並從表單頂部的模式選擇器中選擇加密(Encrypt)。
- 在訊息欄位中輸入或貼上明文。明文可為 ASCII、帶變音符號的拉丁字母、斯拉夫字母、CJK 或表情符號;頁面會在執行任何 XOR 之前將所有內容編碼為 UTF-8。
- 依你預定分享的方式精確輸入金鑰,包括大小寫與空格。請記住金鑰以文字形式讀取,而非十六進位,因此 key 一詞會成為 UTF-8 位元組 6B 65 79,而非將三個位元組 6B、65 與 79 視為字面上的十六進位字串。
- 按下加密按鈕。頁面會同時顯示相同的密文兩次 —— 一次為小寫十六進位,一次為標準填補式 Base64 —— 無需你額外操作。
- 複製符合接收端預期格式的結果,並明確告知對方你所發送的是哪一種。稍後在訊息中從十六進位切換至 Base64 並不會改變底層的 XOR 結果,但接收端必須知道要將哪種形式貼回解密欄位。
- 若要還原文字,請返回同一頁面,選擇解密(Decrypt),選取對應的表示方式(十六進位或 Base64),貼上密文,並輸入完全相同的金鑰 —— 逐字元相符,包含空格與標點符號。
- 讀取輸出結果。若解密步驟產生 UTF-8 驗證錯誤,表示金鑰或編碼有誤;若產生可讀文字,請透過第二個管道再次確認其含義,因為錯誤的金鑰有時仍可能偶然解碼為有效字元。
由於加密與解密使用同一運算,僅有在上述每一步皆一致時,往返流程才會成功。這就是完整的協定。
決定相容性的 UTF-8 慣例
「與其他工具產生不同結果」回報中最大的單一原因,在於位元組與字元之間的混淆,而本頁面對此的規範格外嚴格。明文與金鑰皆以 TextEncoder 編碼,這代表每個可見字元依字元集不同會成為一至四個位元組,且每個位元組皆獨立參與 XOR。例如以 café 撰寫的金鑰,在 é 被編碼為兩個 UTF-8 位元組後長度為五個位元組,因此即使使用者僅輸入四個字元,仍會在明文中推進五個位置。MDN 上 TextEncoder 的參考文件記載了此行為,而任何進行比較的函式庫皆必須逐位元組遵循,才能產生相符的輸出。
以下以金鑰 key 為例,使規則更具體:
- 明文:Hi → UTF-8 位元組 48 69
- 金鑰:key → UTF-8 位元組 6B 65 79(在此兩位元組訊息中第三個位元組未使用)
- XOR 步驟:48 XOR 6B = 23,69 XOR 65 = 0C
- 密文:十六進位表示為 230C,或標準填補式 Base64 表示為 Iww=
若要解密,請將 230C(或 Iww=)貼入對應欄位,並再次輸入金鑰 key。頁面會以相同的位元組順序重複執行 XOR,接著將產生的兩個位元組驗證為 UTF-8,恰好得到 Hi。若金鑰錯誤,XOR 步驟通常會產生無法通過 UTF-8 檢查的位元組,此時你會看到錯誤訊息,而非亂碼字串。
為接收端選擇輸出格式
十六進位與 Base64 是同一密文的兩種面貌,且此工具在每次加密時皆同時顯示兩者,因此選擇的重點在於傳輸方式,而非數學運算。下表彙整了本頁面上每種格式所保證的特性。
| 特性 | 十六進位輸出 | Base64 輸出 |
|---|---|---|
| 長度與原始位元組的關係 | 每個位元組恰好兩個字元 | 每三個位元組約四個字元 |
| 直接位元組檢查 | 自然對齊至位元組邊界 | 將三個位元組組成四個字元 |
| 欄位內的換行處理 | 可接受且予以忽略 | 可接受且予以忽略 |
| 最佳傳輸管道 | 電子郵件內文、程式碼註解、文件 | URL 查詢字串、JSON 承載、具有長度限制的表單欄位 |
| 嚴格的解碼規則 | 僅接受完整的十六進位位元組對 | 使用標準字母與正確的填補 |
無論你選擇哪種格式,底層的 XOR 位元組皆完全相同。若同事已成功以十六進位解密,並請你以 Base64 重新傳送相同訊息,請重新執行加密並複製 Base64 那一行;切勿自行進行十六進位解碼再重新編碼,因為這可能引入空白字元或改變十六進位數字的大小寫。
重複金鑰 XOR 的適用與不適用情境
比較各種方案正是尋找替代方案的核心目的,因此將取捨與主要使用情境並列說明有所助益。下表將 XOR Encryption Online 與 AES Encryption Online 視為光譜的兩端 —— 一者為可逆的教學用基礎工具,另一者為以可攜 JSON 套件形式提供的已認證加密器。
| 情境 | 本頁面的重複金鑰 XOR | 透過 AES 工具的 AES-256-GCM |
|---|---|---|
| 學習 XOR 的運作方式 | 與教科書範例完全相符 | 加入區塊加密的額外負擔,掩蓋了 XOR 步驟 |
| CTF 題目、攻防賽與混淆 | 專為此設計;金鑰即為唯一秘密 | 對此任務過於龐大,且難以人工檢查 |
| 與朋友交換無害的便條 | 在無需保密性的情況下適合使用 | 在需要保密性的情況下適合使用 |
| 保護密碼、付款資料或私密金鑰 | 不適用;金鑰重複會暴露規律 | 適用;認證式加密可防止靜默竄改 |
| 偵測密文竄改 | 無完整性檢查;被竄改的位元組仍會解密為文字 | 內建認證標記,會拒絕任何遭修改的密文 |
| 透過文字管道分享結果 | 原始 XOR 位元組的十六進位或 Base64 | 單一 JSON 套件,捆綁密文、nonce 與標記 |
一旦錯誤的接收者或遭竄改的封包可能造成實際損害,請立即從 XOR 切換至 AES Encryption Online。AES 工具可一步完成密碼衍生與認證封裝,是編碼類別中在保密性或完整性確實重要時的合適替代方案。
=Diagnosing Decrypt Errors and Mismatched Keys
A short tour of the messages the page produces in normal use saves a lot of trial-and-error.
- "Input is empty" or "Key is empty". Both fields are required, and the form refuses to run until each contains at least one byte after UTF-8 encoding.
- "Invalid hex" or "Invalid Base64". Decrypt expects complete byte pairs for hex and the standard alphabet with correct padding for Base64. Any stray character in the ciphertext stops the run; whitespace inside the encoded ciphertext is ignored for convenient line wrapping.
- "Invalid UTF-8" after decrypt. The XOR step produced bytes that cannot be decoded as UTF-8. The most common cause is a key mismatch; a corrupted transport is the second.
- Result looks like readable text but seems wrong. A wrong key can occasionally yield valid UTF-8 by accident, especially with short ASCII messages. Confirm meaning through a second channel, then recheck the key's exact characters.
- Input or key exceeds 100,000 bytes. The cap protects performance; trim the payload or split it before retrying.
Treating each of these as a signal rather than a failure makes the round trip predictable, and once the round trip is predictable the page starts to feel less like a black box and more like a small, transparent piece of infrastructure you can drop into any teaching or puzzle workflow.
For a deeper look, see AES Encryption Online GCM: JSON Package Workflow.
For a deeper look, see HMAC Generator API Alternative: Skip the Endpoint.