跳转到正文

列换位密码

输入关键词和消息,工具会将消息按行写在关键词之下,为列按字母顺序编号,然后按列读取——每一步的网格都会画出。解密时无论是否填充,都只凭长度重建网格;第二个关键词则提供双重换位。

模式

每个字母对应一列,并按关键词字母的字母顺序读取;重复的字母从左到右编号。数字也可以使用(3142)。

最后一行
同时移动这些字符(关闭时:仅字母,大写)

解密时请使用与加密时相同的选项——此处保留的每个字符都是网格的一部分。

网格

网格 1:在 ZEBRAS 下按行书写消息

ZEBRAS
顺序 6顺序 3顺序 2顺序 4顺序 1顺序 5
WEARED
ISCOVE
REDFLE
EATONC
E

按顺序读取各列: EVLN · ACDT · ESEA · ROFO · DEEC · WIREE

如何使用列换位密码

  1. 1. 选择模式和关键词。 关键词的每个字符对应一列。列按关键词字母的字母顺序编号,重复字母从左到右编号;数字也可以使用。
  2. 2. 决定最后一行如何结束。 保持较短——列不整齐,或用 X 补齐,使每列长度相同。发送方和接收方必须做出相同的选择。
  3. 3. 选择移动的内容。 默认只移动字母,且为大写,这是经典的做法。勾选空格、标点或小写,即可同时移动它们;解密时请使用相同的设置。
  4. 4. 如需双重换位,请添加第二个关键词,然后复制结果——如需要,可按五个字母一组。工作过程会显示每个网格及其列编号。

列换位的工作原理

换位密码保留每个字母,只改变它们的顺序。在列换位中,您将消息按行写入,每行的宽度与关键词相同,然后不是从左到右,而是按关键词字母的字母顺序逐列读取。

在 ZEBRAS 中,按字母顺序排列的字母为 A、B、E、R、S、Z,因此六列按 6 3 2 4 1 5 的顺序读取:先读 A 列。消息 We are discovered. Flee at once.——25 个字母——填满四个完整行和第五行的一个字母:

关键词 ZEBRAS 的网格

Z E B R A S
6 3 2 4 1 5
-----------
W E A R E D
I S C O V E
R E D F L E
E A T O N C
E

按数字顺序读取各列,得到 EVLN、ACDT、ESEA、ROFO、DEEC 和 WIREE,发送为 EVLNA CDTES EAROF ODEEC WIREE——这是工具的示例。若改用 X 填充最后一行,则得到 EVLNX ACDTX ESEAX ROFOX DEECX WIREE,其中有五个填充字母,接收方在解密后需要将其剔除。

解密:重建网格

接收方知道长度(25)和密钥(6 列)。由于 25 = 4 × 6 + 1,即有四个完整行加一个多出的字母,因此最左边的列有五个字母,其余各列为四个。按数字顺序填入各列——A 下填 EVLN,B 下填 ACDT,依此类推,最后 Z 下填 WIREE——然后按行横向读取,即可还原消息。若使用填充,每列长度相同,计算会更简单。

双重换位

将结果再通过第二个网格处理,可以更彻底地打乱它。将 EVLNACDTESEAROFODEECWIREE 写入 STRIPE 下(列顺序 5 6 4 2 3 1)并读取,得到 CAEEN SOIAE DRLEF WEDRE EVTOC。解密时先撤销第二个网格,再撤销第一个。启用填充时,本工具只填充第一个网格,因此第二个网格总是仅凭长度即可撤销。

历史

换位是一个古老的想法——古斯巴达的密码棒(scytale)将一条书写材料缠绕在棒上;John Falconer 的《Cryptomenysis Patefacta》(1685)给出了有键列换位及用以填充最后一行的空字符的最早英文解释之一。第一次世界大战中,德国军队使用一种双重列换位,法国人称之为 Übchi;他们定期破解它,直到其成功被报纸 Le Matin 报道,德国人于 1914 年 11 月 18 日更换了它。第二次世界大战中,双重换位是英国特别行动处(SOE)、美国战略情报局(OSS)、荷兰抵抗组织和法国马奎斯(Maquis)的现场密码,也是德国陆军和海军的紧急密码。

列换位的安全性如何?

单次换位很弱。它的字母频率与普通英语完全相同,这会立即告诉分析者字母是被移动而非被替换的;分析者可以猜测列数,将密文切成列,再把各列相互滑动,直至出现单词——即字母重排(anagramming)。不规则列比填充列更难破解。双重换位在战地中一直被信任至 20 世纪 50 年代,但使用相同密钥、长度相同的两条消息可以一起做字母重排;2013 年,George Lasry 用计算机破解了其作者原本认为无法破译的一个双重换位挑战。请用它来学习换位的原理,而不是用来保守秘密。

常见问题

什么是列换位密码?
一种将消息按行写在关键词之下,然后按列读取的密码,列按关键词字母的字母顺序排列。消息的每个字母都保留在密文中,只有顺序发生变化。知道关键词的接收方会重建网格并按行读取。
如何从关键词推算列的顺序?
将关键词的字母按字母顺序编号。ZEBRAS 得到 6 3 2 4 1 5,因为 A 排在最前,Z 排在最后。若字母重复,副本从左到右编号,因此 LETTER 得到 3 1 5 6 2 4。由数字组成的关键词,如 3142,则按数值顺序读取。
我应该用 X 填充最后一行吗?
两种做法都可以,只要双方同意。填充使每列长度相同,手工操作更容易,但解密后必须删除填充字母,而且它们会向分析者暴露网格的形状。保持最后一行较短——列不整齐——则不产生填充字母,也更难攻破。
如何在没有密钥的情况下解密列换位?
猜测列数——若使用填充,列数能整除消息长度——将密文按该长度写成列,然后重新排列各列,直到各行读成单词。常见的字母组合如 TH、HE 和 IN 可以显示哪些列应当相邻。双重换位使手工破解变得困难,不过计算机仍能破解它。
什么是双重换位?
将列换位应用两次,通常使用两个不同的关键词。第一个网格的输出成为第二个网格的输入。它比单次换位强得多——第二次世界大战中的抵抗网络以及 SOE 和 OSS 的特工都依赖它——但面对现代计算机攻击仍不安全。
换位与替换有什么区别?
替换密码将每个字母替换为另一个字母,并保持顺序;换位则保留字母、改变顺序。这就是为什么换位不会改变明文的字母频率。历史上两者常被结合使用,例如第一次世界大战中的 ADFGVX 密码。

相关工具

编码与密码中的更多工具