列换位密码编码器和解码器

列换位密码通过将明文逐行写入网格,然后按关键词确定的顺序逐列读取来加密消息。使用此免费工具可以单次或双重换位方式编码和解码消息。与替换密码不同,换位密码重新排列字母位置而不改变字母本身,使频率分析无效。

编码
结果
0 字符
关键词:
填充:

关于列换位密码的常见问题

什么是列换位密码?

列换位密码是一种加密方法,通过将消息字母逐行写入网格,然后按关键词确定的特定顺序逐列读取来重新排列字母。与替换字符的替换密码不同,换位密码只改变字符的位置,保持原始字母不变。

关键词如何确定列顺序?

关键词字母按字母顺序排序,每个字母在排序中的位置成为其列编号。例如,关键词 ZEBRAS:A 是第 1 位,B 是第 2 位,E 是第 3 位,R 是第 4 位,S 是第 5 位,Z 是第 6 位。当字母重复时,按其在关键词中的位置(从左到右)打破平局。然后按此编号顺序逐列读取消息。

列换位中的填充是什么?

当明文无法完全填满网格时(最后一行有空格),需要添加填充字符来填满剩余格子。常见的填充字符包括 X 或 Z。某些实现使用随机字母或不填充。填充确保所有列长度相等,简化加密和解密。接收方知道忽略解码消息末尾的填充字符。

什么是双重列换位?

双重列换位使用两个不同的关键词将密码应用两次。明文首先用第一个关键词加密,然后将所得密文再次用第二个关键词加密。这显著提高了安全性,因为第一次的列结构被第二次打乱,使密码分析更加困难。它在一战和二战期间被军事力量广泛使用。

列换位密码在二战中如何使用?

列换位密码在二战期间被广泛使用,特别是德国军队和抵抗组织。双重换位变体被认为足够安全用于野战通信,因为它只需要铅笔和纸,可以使用记忆的关键词,并能抵抗简单的频率分析。德国 ADFGVX 密码将波利比乌斯方格替换与列换位结合以增强安全性。

列换位密码与栅栏密码相比如何?

两者都是换位密码,但差异显著。栅栏密码以锯齿形模式写入固定行数的文本,密钥空间有限(仅为行数)。列换位使用关键词确定列的读取顺序,提供更大的密钥空间。列换位通常更安全,尤其是双重换位变体,更适合军事用途。

列换位密码可以被破解吗?

单次列换位可以使用变位词技术破解,密码分析员尝试不同的列排列直到出现可读文本。列数可以从密文长度的因数中猜测。双重换位更难破解,但可以使用已知明文攻击或统计方法用足够的密文进行攻击。现代计算机可以快速暴力破解常见关键词。

为什么频率分析对换位密码无效?

频率分析对替换密码有效,因为字符被替换时字母频率会改变。在换位密码中,原始字母被保留——只有其位置改变。密文中的字母频率分布与明文相同。这使得频率分析对破解换位密码无用,尽管对潜在列排列的双字母/三字母分析可能有效。

什么是列换位密码(Columnar Transposition Cipher)?

列换位密码(columnar transposition cipher)是一种经典加密方法,通过重新排列消息中字母的位置来加密,而不改变字母本身。与凯撒密码或维吉尼亚密码等替换密码不同,换位密码保留所有原始字母——只是打乱其顺序。

明文按行写入以关键字定义列的网格中,然后按关键字字母的字母顺序逐列读出,生成密文。这使频率分析完全失效,因为字母分布与原始明文完全相同。

列换位密码的工作原理

加密步骤详解

关键字: ZEBRAS 明文: WE ARE DISCOVERED FLEE AT ONCE

第一步——按关键字字母顺序为各列编号:

ZEBRAS
632415

排序:A(1)、B(2)、E(3)、R(4)、S(5)、Z(6)

第二步——将明文逐行写入网格:

632415
WEARED
ISCOVE
REDFLE
EATONC
EXXXXX

最后一行用 X 填充以补满所有列。

第三步——按编号顺序读出各列(1、2、3、4、5、6):

  • 第 1 列(A):E V L N X
  • 第 2 列(B):A C D T X
  • 第 3 列(E):E S E A X
  • 第 4 列(R):R O F O X
  • 第 5 列(S):D E E C X
  • 第 6 列(Z):W I R E E

密文: EVLNX ACDTX ESEAX ROFOX DEECX WIREE

解密

解密时,接收方必须知道关键字。他们根据密文长度除以关键字长度计算行数,按关键字字母顺序填入各列,然后逐行读取网格以还原明文。

双重列换位密码

双重换位密码使用两个不同的关键字两次应用该密码。第一次加密的输出作为第二次的输入。这大幅提高了安全性,因为第一次的列结构被第二次完全打乱。

双重换位密码在第一次世界大战和第二次世界大战期间被军事力量广泛使用,原因如下:

  • 仅需铅笔、纸张和一个记忆中的关键字
  • 能抵抗简单的密码分析技术
  • 两个短关键字提供了相当可观的安全性

列换位密码示例

上面的 ZEBRAS 演示讲的是最基本的加密流程。下面的例子补充解密、其他关键字、填充方式和双重换位,结果都和本站的加密器、解码器一致。

示例 1:解密 ZEBRAS 消息

密文: EVLNXACDTXESEAXROFOXDEECXWIREE · 关键字: ZEBRAS

  1. 30 个字母 ÷ 6 列 = 5 行,每一列正好 5 个字母。
  2. 把密文每 5 个字母切成一段,按列编号 1、2、3、4、5、6 依次放回:EVLNX 放在 A 下面,ACDTX 放在 B 下面,ESEAX 放在 E 下面,ROFOX 放在 R 下面,DEECX 放在 S 下面,WIREE 放在 Z 下面。
  3. 把拼好的网格逐行读出:WEARED / ISCOVE / REDFLE / EATONC / EXXXXX。

去掉末尾的填充字母,就得到 WE ARE DISCOVERED FLEE AT ONCE。

示例 2:短关键字

明文: ATTACK AT DAWN · 关键字: KEY(列序 K=2、E=1、Y=3)

K (2)E (1)Y (3)
ATT
ACK
ATD
AWN

12 个字母正好填满 4 行,不需要填充。按 E、K、Y 的顺序读列:TCTW + AAAA + TKDN = TCTWAAAATKDN。密文里连着出现四个 A,暴露了短关键字的毛病:明文里挨得近的字母,到了密文里往往还挨在一起。

示例 3:关键字里有重复字母

明文: SECRET · 关键字: BANANA

相同字母按从左到右的顺序编号:三个 A 依次是 1、2、3,B 是 4,两个 N 是 5 和 6:

BANANA
415263
SECRET

按 1 到 6 读列得到 E、R、T、S、C、E,密文是 ERTSCE。常见的错误是把 B 排在后面两个 A 之前,这样算出的密文按标准规则是解不回来的。

示例 4:填充与不填充

明文: WE ARE DISCOVERED FLEE AT ONCE · 关键字: ZEBRAS · 填充: 不填充

25 个字母填到最后一行只剩 1 个字母(落在 Z 列),所以有五列是 4 个字母、Z 列是 5 个字母。按顺序读列得到 EVLNACDTESEAROFODEECWIREE,比上面演示里补了 X 的版本少 5 个字母。解密不填充的消息时,接收方要先根据长度(25 = 4 整行 + 1 个字母)算出哪些列少一个字母,再往里填;本站的解码器会自动完成这一步。

示例 5:双重换位

明文: HELLO WORLD · 第一个关键字: CAB · 第二个关键字: DUSK

  1. 第一轮用 CAB(列序 C=3、A=1、B=2):网格各行是 HEL / LOW / ORL / DXX,按 A、B、C 读列得到 EORXLWLXHLOD。
  2. 第二轮用 DUSK(列序 D=1、U=4、S=3、K=2):把 EORXLWLXHLOD 写成 EORX / LWLX / HLOD 三行,再按 D、K、S、U 读列:ELH + XXD + RLO + OWL = ELHXXDRLOOWL。

解密时先撤销 DUSK,再撤销 CAB。在加密器里打开双重换位、填入同样两个关键字,输入明文即可得到 ELHXXDRLOOWL。

安全性分析

方面单次换位双重换位
密钥空间n!(关键字长度的阶乘)n1! x n2!
频率分析无效无效
字谜攻击脆弱抵抗力强
已知明文攻击脆弱更具抵抗力
历史军事使用有限广泛(一战、二战)

为何频率分析失效

换位密码保留了原始字母频率,因为没有替换任何字母。密文包含与明文完全相同的字母,只是顺序不同。攻击者无法从密文的字母分布中区分明文信息。

字谜攻击

对于单次换位,密码分析师可以猜测列数(从密文长度的因数推断),然后尝试重新排列各列,直到出现可读的双字母组合和三字母组合。这种方法对双重换位几乎无效。

列换位密码与其他密码的比较

特征列换位密码凯撒密码维吉尼亚密码Playfair 密码
类型换位替换多表替换双字母组替换
改变字母?否是是是
频率分析无用有效部分有效部分有效
密钥类型关键字移位数字关键字关键字
加密单元完整消息单个字母单个字母字母对

历史使用

列换位密码有着丰富的军事历史:

  • 第一次世界大战:德国军队用于野战通信
  • 第二次世界大战:双重换位变体被抵抗组织和情报机构使用
  • ADFGVX 密码:德国军队将 Polybius 方阵 替换与列换位结合,创造出一战中最复杂的密码系统之一
  • 英国特别行动处(SOE):英国特工使用以诗歌为关键字的双重换位密码进行秘密通信

常见问题

如何用手工方式进行列换位加密?

将关键字横写在网格顶部,按字母顺序对各列编号,逐行填入明文(如有需要则在最后一行填充),然后按编号顺序读出各列。以关键字 ZEBRAS 和消息"HELLO WORLD"为例:为各列编号 A=1、B=2、E=3、R=4、S=5、Z=6,填好网格后依次读取第 1 至第 6 列。

列换位应该选择什么关键字?

选择没有重复字母的关键字操作最简单。关键字越长,列数越多,安全性越高。历史用户通常选择易记的短语或代号。避免使用非常短的关键字(4 个字母以下),因为其安全性极低。对于双重换位,使用两个不同长度的不同关键字。

在不知道关键字的情况下能破解列换位密码吗?

单次列换位可以通过猜测列数(从密文长度的因数推断)然后进行字谜攻击——尝试不同的列排列直到出现可读文本。双重换位则难以破解得多。我们的解码工具包含自动暴力破解模式,可自动尝试常见关键字。

列换位密码与栅栏密码有什么区别?

两者都是换位密码,但文本排列方式不同。栅栏密码将文本以锯齿形写入固定行数,而列换位密码将文本写入网格后按关键字确定的顺序读取列。列换位密码的密钥空间更大,因其更高的安全性而在军事中更受青睐。

为何列换位密码在战时广受欢迎?

它只需铅笔和纸,关键字可以记忆(无需可被缴获的密码本),能抵抗频率分析,且双重换位变体在当时提供了强大的安全性。野战特工无需任何特殊设备即可加密和解密消息。

相关工具和资源