列换位密码示例和教程
通过涵盖加密、解密、双重换位和关键字处理的逐步示例学习列换位密码。
逐步讲解:关键词 ZEBRAS
加密「WE ARE DISCOVERED FLEE AT ONCE」
步骤 1:确定列顺序
将关键词字母按字母顺序排序。每个字母在排序中的位置成为其列编号。
| 关键字 | Z | E | B | R | A | S |
| 已排序 | A | B | E | R | S | Z |
| 列号 | 6 | 3 | 2 | 4 | 1 | 5 |
步骤 2:逐行填入网格
将明文写入 6 列的网格(每个关键词字母一列)。用 X 填充最后一行。
| 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 | X | X | X | X | X |
步骤 3:按顺序读取各列
从上到下读取每一列,按编号顺序(第 1、2、3…)进行。
关于列换位密码示例的常见问题
基础 ZEBRAS 示例如何工作?
基础示例用关键词 ZEBRAS 加密「WE ARE DISCOVERED FLEE AT ONCE」。第 1 步将关键词字母按字母顺序排序(A、B、E、R、S、Z)以确定列读取顺序。第 2 步将明文逐行写入六列网格,最后一行用 X 填充。第 3 步按编号顺序从上到下读取每一列,得到密文。交互式网格用颜色标注列,使你可以追踪每个字母最终落在哪里。
为什么双重换位示例使用两个关键词?
双重换位用两个不同的关键词(示例中先 SECRET 后 CODE)加密两次。第一次产生中间密文,再输入第二次加密。由于第二次打乱了第一次的列结构,变位词攻击变得困难得多。德国军队在两次世界大战中正是出于这个原因广泛使用双重换位。
二战用途示例教给你什么?
二战示例从安全级别、典型用途、与栅栏密码相比的密钥选项、以及所需设备等方面对比单次和双重换位。它解释了为什么一支铅笔加可记忆关键词的密码对野战人员有吸引力,并指出德国 ADFGVX 密码将波利比乌斯方格替换与列换位结合。英国密码分析师乔治·潘万于 1918 年 6 月破解了 ADFGVX。
练习题如何帮助你学习?
练习部分要求你确定关键词 KEY 的列顺序、用关键词 ABC 加密 HELLO WORLD、以及解释为什么双重换位比单次换位更安全。点击揭示可以查看参考答案。先做题再核对是确认你能手工应用关键词排序和列读取规则的最快方式,无需依赖编码器工具。
列换位密码示例——逐步学习
示例 1:使用关键字 ZEBRAS 的基础加密
这个经典示例使用著名关键字 ZEBRAS 演示标准列换位过程。
问题设置
明文:WE ARE DISCOVERED FLEE AT ONCE 关键字:ZEBRAS
第一步:确定列顺序
按字母顺序排列关键字字母,相同字母按位置排序:
| 字母 | Z | E | B | R | A | S |
|---|---|---|---|---|---|---|
| 位置 | 0 | 1 | 2 | 3 | 4 | 5 |
| 顺序 | 6 | 3 | 2 | 4 | 1 | 5 |
字母顺序排名:A(位置 4)=1、B(位置 2)=2、E(位置 1)=3、R(位置 3)=4、S(位置 5)=5、Z(位置 0)=6
第二步:将明文写入网格
去除空格,按 6 列逐行写入:
| Z(6) | E(3) | B(2) | R(4) | A(1) | S(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 | X | X | X | X | X |
最后一行用 X 填充。
第三步:按 1、2、3、4、5、6 顺序读取各列
- 第 1 列(A):EVLNX
- 第 2 列(B):ACDTX
- 第 3 列(E):ESEAX
- 第 4 列(R):ROFOX
- 第 5 列(S):DEECX
- 第 6 列(Z):WIREE
结果:WE ARE DISCOVERED FLEE AT ONCE -> EVLNXACDTXESEAXROFOXDEECXWIREE
示例 2:基础解密
将示例 1 的密文解密回原始消息。
问题设置
密文:EVLNXACDTXESEAXROFOXDEECXWIREE 关键字:ZEBRAS
第一步:计算网格尺寸
30 个字符 / 6 列 = 5 行(整除,无短列)
第二步:按字母顺序填入各列
每列取 5 个字符,按 1、2、3、4、5、6 顺序填入:
第 1 列(A,位置 4):E V L N X 第 2 列(B,位置 2):A C D T X 第 3 列(E,位置 1):E S E A X 第 4 列(R,位置 3):R O F O X 第 5 列(S,位置 5):D E E C X 第 6 列(Z,位置 0):W I R E E
第三步:将各列放回原始位置重建网格
| Z(0) | E(1) | B(2) | R(3) | A(4) | S(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 | X | X | X | X | X |
第四步:逐行读取
WEAREDISCOVEREDFLEEATONCEXXXXX
去除填充:WE ARE DISCOVERED FLEE AT ONCE
示例 3:短关键字加密
较短的关键字产生较少的列,从而形成不同的网格结构。
问题设置
明文:ATTACK AT DAWN 关键字:KEY
第一步:列顺序
| K | E | Y |
|---|---|---|
| 2 | 1 | 3 |
字母顺序:E=1、K=2、Y=3
第二步:填写网格(去除空格)
| K(2) | E(1) | Y(3) |
|---|---|---|
| A | T | T |
| A | C | K |
| A | T | D |
| A | W | N |
无需填充(12 个字符 / 3 列 = 4 行,整除)。
第三步:按 1、2、3 顺序读取
- 第 1 列(E):TCTW
- 第 2 列(K):AAAA
- 第 3 列(Y):TKDN
结果:ATTACK AT DAWN -> TCTWAAAATKDN
示例 4:双重列换位
双重换位应用两轮加密,提供显著更强的安全性。
问题设置
明文:HELLO WORLD 第一关键字:CAB 第二关键字:DUSK
第一步:使用关键字 CAB 进行首次加密
列顺序:A=1、B=2、C=3
| C(3) | A(1) | B(2) |
|---|---|---|
| H | E | L |
| L | O | W |
| O | R | L |
| D | X | X |
用 X 填充。读取各列:EORX LWLX HLOD
第一轮结果:EORXLWLXHLOD
第二步:使用关键字 DUSK 进行第二次加密
列顺序:D=1、K=2、S=3、U=4
按字母顺序排列:D=1、K=2、S=3、U=4
| D(1) | U(4) | S(3) | K(2) |
|---|---|---|---|
| E | O | R | X |
| L | W | L | X |
| H | L | O | D |
按 1、2、3、4 顺序读取:ELH XXD RLO OWL
最终密文:ELHXXDRLOOWL
双重换位解密
解密时,逆转过程:先用关键字 DUSK 解密,再用关键字 CAB 解密。
示例 5:处理关键字中的重复字母
当关键字包含重复字母时,按位置(从左到右)打破平局。
问题设置
明文:SECRET 关键字:BANANA
第一步:含重复字母的列顺序
| B | A | N | A | N | A |
|---|---|---|---|---|---|
| 2 | 1 | 5 | 3 | 6 | 4 |
三个 A:第一个 A(位置 1)= 排名 1,第二个 A(位置 3)= 排名 3,第三个 A(位置 5)= 排名 4。 两个 N:第一个 N(位置 2)= 排名 5,第二个 N(位置 4)= 排名 6。 一个 B:B(位置 0)= 排名 2。
第二步:填写网格
| B(2) | A(1) | N(5) | A(3) | N(6) | A(4) |
|---|---|---|---|---|---|
| S | E | C | R | E | T |
6 个字符只需一行。
第三步:按 1、2、3、4、5、6 顺序读取
E S R T C E
结果:SECRET -> ESRTCE
常见问题
哪里可以找到带解答的列换位密码示例?
如何逐步解决列换位问题?
加密:写下关键字,按字母顺序为各列编号,逐行将明文填入网格(如有需要则填充),然后按编号顺序读取各列。解密:计算网格尺寸,按字母顺序用密文段填入各列,然后逐行读取网格。请参见上方示例 1 和示例 2 的完整演示。
双重列换位如何工作?
用第一个关键字正常加密消息,然后将所得密文用第二个关键字再次加密。解密时反向操作:先用第二个关键字解密,再用第一个关键字解密该结果。上方示例 4 演示了完整过程。
关键字中的重复字母如何影响加密?
当关键字含有重复字母(如 BANANA)时,按位置从左到右打破平局。字母首次出现获得较低排名。这确保了无论字母重复与否,列顺序都是唯一确定的。请参见示例 5 的演示。
应该使用什么填充字符?
最常见的填充字符是 X 和 Z,因为它们是英语中频率最低的字母。某些实现使用随机字母或不进行填充。填充字符的选择不影响安全性,但使用可辨认字符可使手动解密更加容易。