跳转至

Columnar 列移位

全称: Columnar Transposition Cipher

简称: Transposition Cipher

转换方式

列移位密码是一种移位密码。列移位密码需要首先选取一个每个字母都不一样的词作为密钥。(1)

  1. 选取的不一定要是真实存在的词,只要每个字母都不一样就行。当然就算有重复,也可以踢掉重复的字母。

按照密钥的长度画出对应的列数,比如选取 CIPHER 为密钥就有 6 列。将明文从左到右,从上到下填写进这 6 列。 如果填写到最后一列没有填完,剩下的空白可以使用不常用的 X 补上。

之后,将选取的密钥进行字典序排序,排序时将带着那一列一起移动,得到新的 6 列。

最后,从字典序的第一列开始,从上到下,从左到右写出最终变换的结果。

注意两条加粗文字的区别。将明文填写进列表里是沿着行的方向写,即行优先。 将字母写成密文是沿着列的方向写,即列优先

说点闲话

有时候说到移位加密 (Transposition Cipher) 这个名词,它既可以指能和置换加密同等地位的加密类型, 也可以特指列移位这种具体的加密方式,足以彰显其在移位加密中的地位。

需要指出,国内提到移位加密,第一反应多为栅栏密码。然而,其翻译 Railfence Cipher 在英文中 实际上指的是另外一种加密。国内的栅栏密码实际指的是不进行任何移动的列移位密码

关于 Railfence Cipher,请参考栅栏密码页面。

加密举例

明文: WELCOME TO PUZZLE HUNT WIKI CN

密钥: CIPHER

进行排列:

C I P H E R
W E L C O M
E T O P U Z
Z L E H U N
T W I K I C
N [X] [X] [X] [X] [X]

注意这里使用了 [X] 来表示空白的地方。接下来我们对 CIPHER 这个词进行字典序排序,排序时要带着它下面的列一起动。

C E H I P R
W O C E L M
E U P T O Z
Z U H L E N
T I K W I C
N [X] [X] [X] [X] [X]

然后按照 C 列,E 列,H 列这样的顺序竖着写出,得到

密文: WEZTN OUUIX CPHKX ETLWX LOEIX MZNCX

识别方式

由于列移位密码仅仅只是更改了字母顺序,并没有变换原文,对于杂序的内容都可以尝试猜测密钥长度的方式将密文列出来。

有些列移位密文中会把 X 填补在空位,有些则不会,如果能够看到列出的每列最后有大量的相同字母,那么你很有可能猜中了列移位的长度。

之后可以通过解码工具进行辅助,将所有可能的排序列出,找到能够读通顺的内容。

解码工具