Base100 編碼是位元組精確且可逆的:每個 UTF-8 位元組 b 對應到一個位於 U+1F3F7..U+1F4F6 範圍(含端點)內的單一碼位 U+1F3F7 + b,且每次轉換都在您的瀏覽器本地執行,不會上傳輸入內容。這使得 Base100 在您掌控的轉換過程中能用於保護資料完整性——您的文字從不離開此頁面、對應是確定性的、解碼器使用嚴格的 UTF-8 驗證,使無效位元組產生明確錯誤而非靜默替換字元。這些特性也同時定義了 Base100 「不是」什麼:它不是加密、不是雜湊、不是身分驗證,也不是隱寫術方案。任何知道這 256 個符號範圍的人都能還原原始位元組,而單一被更改的符號只會精確影響下游的一個位元組,且內建沒有校驗和來標示此變更。請將 Base100 視為用於傳輸、顯示或解謎用途的可逆編碼,對於任何您實際需要保密或驗證防竄改的資料,請使用經審核的加密技術。

Base100 編碼中「安全」的意義
「Base100 encode safe」這句話混用了兩種不同的安全定義,而答案取決於您指的是哪一種。Base100 在受控轉換中的資料完整性方面是安全的:每個 UTF-8 位元組使用公式 code_point = U+1F3F7 + byte 精確對應到範圍 U+1F3F7..U+1F4F6(含端點)內的一個碼位,作業在您的瀏覽器本地執行,解碼器執行嚴格的 UTF-8 驗證,使格式錯誤的串流產生明確錯誤而非靜默替換字元。然而相同的編碼在機密性、身分驗證或竄改偵測方面並不安全——此格式是由 Adam Niederer 的 Base100 專案作為可逆的位元組對符號對應所引入的,任何知道這 256 個符號範圍的人都能還原原始位元組。
| 特性 | Base100 |
|---|---|
| 加密 | 否 |
| 雜湊或指紋識別 | 否 |
| 身分驗證/數位簽章 | 否 |
| 內建校驗和或 MAC | 否 |
| 壓縮 | 否 |
| 隱寫術 | 否 |
| 人類語言表情符號翻譯 | 否 |
| 可逆的位元組對符號對應 | 是 |
| 瀏覽器本地處理(無上傳) | 是 |
| 解碼時執行嚴格 UTF-8 驗證 | 是 |
| 嚴格範圍強制(U+1F3F7..U+1F4F6) | 是 |
由此衍生兩個結論。第一,被更改的符號會精確影響下游的一個位元組,但 Base100 沒有校驗和、長度標記或 MAC,因此語法上有效的編輯無法與原文區分。第二,只要精確保留碼位,相同的對應方式使此格式極為強健,因為每次轉換都是確定性的,且每個無效輸入都會被明確拒絕。在此格式中,安全取決於您使用的是哪一種合約。
為何 Base100 轉換在您的瀏覽器中是安全的
Base100 編碼器/解碼器完全以用戶端 JavaScript 實作對應,這表示您在編碼或解碼過程中輸入的位元組從不離開此頁面。沒有攜帶您明文的網路請求、沒有伺服器端記錄、轉換過程中沒有遙測機制。編碼器首先使用每個現代瀏覽器在其文字邊界套用的相同演算法(即 WHATWG 編碼標準 所指定的演算法),將您的 JavaScript 字串轉為 UTF-8 位元組,接著對每個位元組值加上 U+1F3F7。
解碼器鏡像此過程,逐一處理 Unicode 碼位(而非 UTF-16 程式碼單元),拒絕任何落在 U+1F3F7..U+1F4F6 範圍之外的字元,從每個接受的碼位減去 U+1F3F7 以還原位元組,然後將位元組串流交給嚴格的 UTF-8 解碼器,後者在遇到無效序列時會失敗,而非靜默替代為 U+FFFD。雙向作業每次請求限制為 500,000 個位元組或符號,因此失控的貼上不會凍結分頁;空輸入會被拒絕,確保您不會意外收到空的成功訊息。實作中的獨立測試案例鎖定了下限與上限碼位以及具代表性的位元組位移,使位元組對表情符號公式在每個支援的瀏覽器上行為一致。
Base100 串流常見的損壞方式
大多數失敗的來回轉換並非由編碼器造成,而是由編碼器輸出與解碼器輸入之間的傳輸過程造成。有幾類編輯常見到值得明確列出。
- 變體選擇器。某些聊天應用程式、鍵盤和表情符號選擇器會在表情符號後方插入 U+FE0F(變體選擇器-16)以強制彩色顯示。新增的碼位在螢幕上不可見,但會使串流超出嚴格的 Base100 範圍,解碼器將會拒絕它。
- 空格、定位字元和換行。文書處理器、Markdown 編輯器和程式碼區塊格式化器經常會將長串的表情符號在固定寬度處換行,或插入零寬度空格。Base100 中這些字元都不是框定語法;它們全部算作無效符號。
- 被替換的字形。某些即時通訊用戶端會以自家圖示集取代不熟悉的表情符號,或將其降級為單色文字。在螢幕上看起來像某個對應符號的碼位,實際上可能來自不同區塊的相容性字元,嚴格的解碼器將會拒絕此替換。
- 正規化管線。NFC 和 NFD 不會分割或合併 Base100 符號,因為每個對應的碼位都是單一純量值;但經過相容性正規化管線處理的貼上路徑,仍可能重寫變體選擇器或將其完全移除。
所有情況的解法都相同:從保留原始碼位的來源貼上,若貼上後無法通過嚴格解碼,請將此失敗視為碼位不符,而非 Base100 的錯誤。
如何安全地使用 Base100 編碼與解碼
- 在桌面或行動瀏覽器中開啟 Base100 編碼器/解碼器。無需安裝、無需註冊、無伺服器來回傳輸。
- 選擇文字轉 Base100,將您的 UTF-8 文字輸入或貼入輸入區域,然後執行編碼器。編碼器會將字串轉為 UTF-8 位元組,並將每個位元組對應到 U+1F3F7..U+1F4F6 範圍內的一個碼位。
- 使用平台的普通複製動作複製產生的符號串流。不要先貼入富文字編輯器、不要加入空格或換行,也不要讓編輯器自動換行。
- 若要還原原始文字,請選擇Base100 轉文字,貼上未經修改的串流,然後執行解碼器。解碼器以 Unicode 碼位掃描,拒絕任何落在 256 符號範圍之外的字元,從每個接受的碼位減去 U+1F3F7,並對還原的位元組執行嚴格的 UTF-8 處理。
- 若解碼器回報錯誤,最可能的原因是變體選擇器、隱藏的空格或被替換的字形。在假設資料本身有誤之前,請從原始來源重新複製並重試。
- 對於非常大的貼上內容,請保持在 500,000 位元組或 500,000 符號的上限以內。若需要編碼更多內容,請將輸入拆分為獨立的區塊,之後再串接還原的區塊——Base100 沒有內建框定機制,因此串接是合併串流的標準方式。
若您想查看每一步背後的數學運算,完整的位元組對表情符號公式詳述於 Base100 編碼詳解:位元組對表情符號公式。
實例演練:一個位元組對應一個碼位
以 ASCII 字母 A 為例。其 UTF-8 位元組值為 65(0x41)。套用公式可得 U+1F3F7 + 65 = U+1F438(十進位 128056)。透過解碼器來回轉換:U+1F438 - U+1F3F7 = 65,而 65 是 A 的有效單一位元組 UTF-8 序列。因此對位元組本身而言對應是無損的;來回轉換失敗的唯一可能是碼位在傳輸過程中被更改。
跨應用程式與平台的互通性風險
Base100 符號位於輔助平面的表情符號區塊中,這表示它們在技術上是有效的 Unicode,但有時會被特殊處理。macOS、Windows、Android、iOS 和各 Linux 發行版各自搭載自己的表情符號字型,同一個碼位可能呈現為彩色圖示、單色字形、豆腐方塊或特定領域的圖示。呈現方式純粹是顯示層面的問題——底層的碼位並不會改變——但會編輯字元的呈現管線則是另一回事。
以下幾個具體的傳輸情境會降低安全性:
- 僅限 ASCII 的管道。電子郵件閘道、HTTP 標頭、URL 路徑及部分舊版 API 會去除或跳脫任何 ASCII 範圍之外的碼位。若您的目的地無法原樣傳遞 U+1F3F7..U+1F4F6,請改用傳輸安全的編碼,例如 Base64 或十六進位。
- Markdown 與程式碼區塊。某些渲染器會對圍欄區塊內部的空白進行正規化,這會插入嚴格解碼器會拒絕的 U+0020 與 U+000A 字元。請將圍欄程式碼視為僅供顯示,並使用純文字管道進行傳輸。
- 雲端剪貼簿服務。部分線上剪貼簿會執行 HTML 轉文字的轉換,這會去除變體選擇器,但也可能打亂原始的碼位順序。經過此類服務的來回轉換無法保證存活。
一條實用的安全原則:當互通性至關重要時,請將 Base100 串流以純 UTF-8 形式,在能精確保留碼位的工具中傳輸,再於目的地使用相同的純瀏覽器解碼器進行解碼。
Base100 無法保護的內容
Base100 是一種編碼,而非安全控制機制。它無法隱藏密碼、證明訊息來自特定發送者、偵測串流是否遭到竄改,也無法壓縮任何資料。任何擁有對應表的人都能還原原始位元組,而單一符號的變更只會影響下游恰好一個位元組,且沒有內建檢查碼來標示該變更。若需要保密,請使用經過審查的加密方式,例如 AES Encryption Online 工具;若需要偵測竄改,請使用經認證的格式或明確的 MAC。
同樣的界線也適用於操作安全性。Base100 無法防止將錯誤的串流貼到錯誤的視窗、無法防止同事在未告知的情況下編輯串流,也無法防止編輯器悄悄將表情符號標準化。嚴格的解碼器能透過大聲拒絕上述任何情況來提供協助,而非假裝輸出完全正確,但前提是你確實有閱讀錯誤訊息。
在其合約範圍內使用時——作為一種可逆、位元組完全一致、在本機處理且具有嚴格 UTF-8 驗證的表情符號對應——Base100 是你在瀏覽器中能執行的最安全的可逆編碼之一。若在其合約範圍外使用——作為機密層、檢查碼或保證乾淨的傳輸——則它在設計上就是不安全的,無論多麼謹慎地選擇工具都無法改變這一點。請為正確的工作選擇正確的工具:位元組完全一致的可逆表情符號編碼使用 Base100,而真正需要保護的事項則使用密碼學基本元件。
延伸閱讀:Convert Base64 to Hex for Large Text Without Losing Bytes。