Rail Fence Cipher(柵欄密碼)是一種歷史悠久的換位密碼,它會將明文的每個字元沿對角線寫入所選的列數,然後從上到下依序讀回各列以形成密文。 像 Rail Fence Cipher Decoder 這樣免費、無需註冊的柵欄密碼解碼器,會在本地端完整處理整個流程,不需要帳號、不需要電子郵件驗證、也不需要上傳你的文字。你只需選擇模式(加密或解密),輸入介於 2 到 100 之間的整數欄數,然後貼上原始字串 —— 空格、標點符號、換行、數字、帶重音字母以及 emoji 都會作為一般 Unicode 碼位一同參與。解密時會重建相同的鋸齒形,計算每個欄位包含多少位置,將密文切成長度相符的欄位分組,再以鋸齒順序逐字元消耗。不會產生任何填補字元,也不會將任何字元正規化掉;相同的輸入搭配相同的欄數,必定回傳相同的輸出。

rail fence cipher decoder free no sign up
Rail Fence Cipher Decoder 免費、無需註冊、無需上傳

為什麼無需註冊的柵欄解碼器特別適合這個任務

換位謎題往往在不湊巧的時刻出現:深夜發現的 CTF 題目、上課前流傳的教師講義、隱藏片語的社群貼文,或是你不想重新輸入到桌面應用程式的教科書片段。建立帳號、確認電子郵件、同意條款、等待驗證連結,都會拖慢一個本應只需幾次按鍵即可完成的任務。一個僅在瀏覽器中運作、無需註冊也無需上傳的解碼器,最符合這樣的節奏 —— 開啟頁面、貼上密文、設定欄數、複製答案。

無需註冊的模式還有一個安靜的隱私理由。教學用的換位訊息有時會包含範例姓名、聯絡資訊,或敏感文件的摘錄,你未必希望它們和使用紀錄一起存放在第三方伺服器上。一個完全在用戶端運作的工具,會讓每個位元組都留在當前瀏覽器分頁中,因此你可以放心地把一份五十頁的練習文本貼進去,不必擔心留存、擷取或外洩。對於在準備發布前處理提示的記者、學生與謎題作者而言,這項優勢同樣適用。

如何在無需帳號的情況下解碼柵欄密碼

介面將整個流程簡化為四個步驟。不會出現登入畫面、驗證碼或速率限制訊息 —— 只有欄數、文字與結果區塊。

  1. 選擇加密或解密,然後輸入介於 2 到 100 之間的整數欄數。 欄數是這個密碼唯一需要的金鑰;低於 2 的數值會被拒絕,因為單欄的柵欄實際上無法進行任何換位。
  2. 貼上完全相同的文字,包括所有必須參與處理的空格、標點符號、數字與換行。 解碼器是逐 Unicode 碼位進行迭代,而非 UTF-16 碼位,因此像是 emoji 這類補充字元會保持完整,不會被切分到不同的欄位中。
  3. 執行運算,並從輸出區塊複製結果字串。 結果區塊中的可見格式屬於輸出的一部分,因此刪除空白可能會改變後續欄位的意義 —— 請複製整段字串,而非手動選取的片段。
  4. 若要反轉運算,請切換模式並沿用相同的欄數。 由於轉換是確定性的,一次成功的來回驗證只能確認你的慣例與其相符,無法證明訊息原本是機密的。

如果你的密文來自其他網站、課堂講義或朋友的腳本,請在重新計算欄數之前先仔細確認慣例。慣例不一致是解密嘗試回傳亂碼最常見的原因,而下一節的表格正是為協助排查這種情況而設計的。

鋸齒換位實際上對你的文字做了什麼

對於給定的欄數 r,明文的每個字元會一次一步向下移動到最底欄,再一次一步向上爬升,直到再次抵達頂端。這條上下路徑的週期長度等於 2(r − 1)。三欄時,週期長度為 4 個位置,列的模式為 0, 1, 2, 1,然後重複為 0, 1, 2, 1, 0, 1, 2, 1,依此類推。兩欄時模式簡化為 0, 1, 0, 1;四欄時模式為 0, 1, 2, 3, 2, 1,再行重複。常見欄數的週期長度彙整如下;每個數值都直接由相同的公式推導而來。

欄數 (r)週期長度 2(r − 1)重複前的列模式
220, 1
340, 1, 2, 1
460, 1, 2, 3, 2, 1
580, 1, 2, 3, 4, 3, 2, 1
6100, 1, 2, 3, 4, 5, 4, 3, 2, 1
8140, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1
10180, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1

加密時會掃過明文一次,根據當前模式索引將每個字元放入對應的列,再從上到下串接各列。解密則反向進行:統計原始序列中落在每個欄位的位置數量,將密文切成長度完全相符的欄位分組,然後再次走訪模式,同時從當前欄位的分組中逐一取出字元。過程中不涉及任何填補或猜測 —— 欄數由加密時使用的相同算術所決定,這也是解密永遠不需要自行嘗試其他欄數的原因。

一個簡短的範例有助於釐清概念。以 WE ARE 為例,使用三欄、向下優先的慣例,並從頂端欄位開始。當 r = 3 時,週期長度為 2 × (3 − 1) = 4,因此六個字元的列指派為 0, 1, 2, 1, 0, 1。位置 0 將 'W' 帶到第 0 列,位置 1 將 'E' 帶到第 1 列,位置 2 將一個實際的空格帶到第 2 列,位置 3 將 'A' 帶回第 1 列,位置 4 將 'R' 帶上第 0 列,位置 5 將 'E' 帶下第 1 列。第 0 列收集 W 然後 R,第 1 列收集 E、A、E,第 2 列僅收集空格。從上到下讀取各列得到密文 WREAE,其中空格作為最後一個字元一併保留。將該密文以三欄重新餵入解碼器,便會還原為原始片語 'WE ARE',空格也回到原來的位置。

慣例比較:不同實作之間的差異

柵欄密碼存在多種合理的慣例,而兩個工具在相同欄數下給出不同答案,最常見的原因其實是慣例不一致,而非程式錯誤。下表整理了實際會影響輸出的四個旋鈕。當結果不相符時,請先以本表進行排查,再懷疑密碼本身有誤。

行為本 Rail Fence Cipher Decoder常見教科書變體部分線上替代工具
起始欄位頂欄(第 0 列)頂欄頂欄或底欄
起始方向向下向下向下或向上
起始偏移無(從位置 0 開始)無0、1 或其他值
空格與標點保留為碼位通常先去除保留或去除皆有可能
Unicode 處理逐碼位迭代(emoji 安全)通常僅限 ASCII差異極大

由於無需註冊的解碼通常只是他人加密步驟的後半段,較安全的做法是:在調整欄數之前,先確認對方使用的是上述哪一項慣例。當明顯的欄數產生亂碼時,在調整欄數之前先比對慣例 會很有幫助,因為方向相反或僅僅一步的偏移,就可能讓同一段明文產生截然不同的密文。

限制、注意事項,以及柵欄密碼不再適用的情境

解碼器對很長的輸入設有兩項實務限制:欄數必須是介於 2 到 100 之間的整數;輸入本身最多 200,000 個碼位,以確保在一般硬體上建構列的過程保持流暢。兩項檢查都會明確回報錯誤 —— 無效的欄數與空白的輸入會分開回報,而不是被默默強制處理,這讓該工具在腳本中行為可預測。若欄數等於或超過字元數,每個被使用到的位置都會落在自己的初始下行段中,輸出將與輸入相同;這是一個有用的診斷方式,可快速辨識錯誤的欄數,不必手動在輸出中尋找已知的單字。

換行會作為一般字元參與處理,這意味著在加密前插入的換行會位移後續所有位置,並產生完全不同的密文。如果必須保留版面配置,請原樣複製結果字串,避免手動編輯。在實作方面有八組黃金測試樣本,涵蓋標準訊息、兩欄到四欄的測試、另一段字母片語、數字、空格、標點符號與補充 Unicode,每組都先直接斷言預期密文,再往返還原為原文 —— 這是驗明「你所看到的慣例就是工具實際套用的慣例」的有力證據。

請將柵欄密碼視為教學與謎題用的密碼,而非真正的加密方式。它唯一的秘密只是個小整數,字元頻率分佈完全沒有改變,在任何筆記型電腦上對數十個欄數進行暴力破解都輕而易舉。對於憑證、個人資料、權杖、檔案或機密通訊,請改用具認證機制的 AES-GCM 等構造。關於歷史定義與其他幾種慣例的有用對照資料,可參考 dCode 的柵欄密碼參考頁;當密文無論如何都拒絕在你選定的欄數下解密時,與該頁交叉比對會有所助益。