跳转至

栅栏密码

栅栏密码是一种 换位密码 (transposition cipher),通过改变明文字符的位置来加密,而不改变字符本身。 它的名字来源于 “栅栏(rail fence)” 的排列方式——加密时把明文像沿栅栏轨迹写下去,然后按行顺序读取密文。

  • 明文按照一定的行数(栅栏数)分布成多行。

  • 再按行依次读取字符形成密文。

基本加密过程

步骤

  1. 选择栅栏数 N(行数)。
  2. 写明文
  3. 明文按字母顺序沿“栅栏轨迹”排列。
  4. 在 N 行之间“之字形”排列:从上往下写到最后一行,再从下往上写回第一行,如此循环。
  5. 按行读取密文
  6. 第一行字符 → 第二行字符 → … → 最后一行字符依次连接。

示例

明文:WEAREDISCOVEREDFLEEATONCE 栅栏数:3

写栅栏(之字形):

W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .

按行读取密文

WECRLTEERDSOEEFEAOCAIVDEN

解密过程

解密需要逆向操作:

  1. 知道栅栏数 N
  2. 确定每行或每列的字符数量
  3. 按之字形(传统栅栏)或列顺序(固定分组)重新排列
  4. 按原顺序读取明文

示例

密文:WECRLTEERDSOEEFEAOCAIVDEN 栅栏数:3

  1. 计算每行字符长度(总长度26):
  2. 第一行:9
  3. 第二行:8
  4. 第三行:9
  5. 按行填充栅栏轨迹
  6. 按之字形读取 → 得到原文 WEAREDISCOVEREDFLEEATONCE

W形栅栏

W 形栅栏密码是一种 多峰之字形排列的换位密码

如果传统栅栏密码只是“上下走一次”,W 形栅栏会在 每个周期形成 W 的形状,即上→下→上→下 → 上,形成两个峰。

栅栏数通常大于 2(至少 3 行),每行代表 W 的一个“轨迹”。

视觉示意(栅栏数 = 3,明文 “HELLORAILFENCE”):

H . . L . . O . . I . . E
. E . L . R . A . L . F .
. . L . . O . . R . . N .

这里就像一个 W,中间行的字符在两峰之间。

W 形加密流程

  1. 选择栅栏数 N
  2. N ≥ 3,N 越大 W 越“高”。
  3. 写明文
  4. 从第一行开始向下走到最后一行,然后向上走到第一行,再向下(形成 W 的第二个峰),依次循环。
  5. 按行读取密文
  6. 第一行字符 → 第二行字符 → … → 最后一行字符
  7. 连接所有字符得到密文

示例

明文:WEAREDISCOVEREDFLEEATONCE 栅栏数:4(W形)

写 W 形栅栏(行索引 0~3):

W . . . R . . . E . . . L . . . T
. E . R . D . S . O . E . E . F . 
. . A . . . I . . . V . . . D . . 
. . . R . . . C . . . A . . . O . 

按行读取密文:

WR ELT ERDSOEEFAIVD RCAO...