四方密码

四方密码:Felix Delastelle 的双字母加密系统详解

了解四方密码如何使用四个 5x5 网格对字母对进行加密。包含完整示例、密钥生成方法及与普莱费尔密码的对比分析。

发布于 2026年3月19日
14 分钟阅读
密码学指南

四方密码是有史以来最优雅的手工加密系统之一。由法国密码学家 Felix Marie Delastelle 于十九世纪末发明,它以成对字母(双字母组)为单位进行加密,使用以方形排列的四个 5x5 网格。其结果是一种比单字母替换密码更能抵抗频率分析、也明显比其更广为人知的同类——普莱费尔密码——更为安全的加密系统。

尽管构思精妙,四方密码仍然足够易于上手,仅凭铅笔、纸张和两个关键词生成的字母表便可手工操作。这种安全性与实用性的结合,使它在整个二十世纪深受业余密码爱好者青睐,并在今天的密码学教育中占有重要地位。

本指南将全面讲解理解、使用和分析四方密码所需的一切知识——从网格构建和加密原理,到安全特性和历史背景。如需加密或解密您自己的消息,请使用四方密码工具


Felix Delastelle 与法国密码学派

密码背后的人

Felix Marie Delastelle(1840—1902)是法国水手、海关官员,也是一位自学成才的密码学家。他的工作在生前几乎无人知晓。他利用业余时间潜心研究密码系统数十年,与其他密码学爱好者保持通信往来,并将独创设计整理成一部题为《密码学基础论》(Traite Elementaire de Cryptographie)的手稿。该手稿于 1902 年他去世后作为遗作出版。

Delastelle 对密码学的贡献远不止四方密码一项。他发明了双格密码(Bifid cipher),该密码结合波利比奥斯方阵与分离技术,先将字母坐标打散再重新组合成密文。他还创造了三格密码(Trifid cipher),将分离技术扩展至三维,使用包含 27 个字符(26 个字母加一个句号)的字母表。这两种系统都引入了扩散概念——将每个明文字母的影响分散到多个密文字母之上——比克劳德·香农将扩散与混淆正式确立为安全密码两大基本属性早了数十年。

十九世纪末密码学的时代背景

Delastelle 工作于密码学活动异常活跃的年代。1870—71 年的普法战争已证明安全通信对军事的重要性,法国密码学家正在积极寻找能够抵御军事情报机构日益强大的分析技术的系统。波利比奥斯方阵——Delastelle 用作多种密码基础的工具——自古希腊时代便已为人所知,但当时正经历一场复兴,密码学家逐渐认识到它作为构建更复杂系统基石的潜力。

那个时代占主导地位的密码是维吉尼亚体系,已于 1863 年被卡西斯基破解。密码学家正在寻找替代方案:既能提供安全性,又不需要真正不可破解系统(如弗兰克·米勒于 1882 年描述的一次性密码本)所要求的长密钥和复杂流程。Delastelle 的双字母组与分离密码代表了应对这一挑战的一种思路。


四方密码的工作原理

网格布局

四方密码使用以 2×2 排列的四个 5×5 网格:

┌─────────────┬─────────────┐
│  明文方阵   │  密文方阵   │
│  网格 1     │  网格 2     │
│  (标准)   │  (关键词)  │
├─────────────┼─────────────┤
│  密文方阵   │  明文方阵   │
│  网格 3     │  网格 4     │
│  (关键词)  │  (标准)   │
└─────────────┴─────────────┘
  • 网格 1(左上)和网格 4(右下)是明文方阵,按正常顺序排列标准字母表,其中 I 和 J 共用一个格子(这是将 26 个字母填入 25 个格子的标准惯例)。

  • 网格 2(右上)和网格 3(左下)是密文方阵,各由一个不同的关键词生成,包含乱序字母表。

明文方阵对所有用户都是相同的,密码的安全性完全取决于用于生成密文方阵的两个关键词。

I/J 合并惯例

由于 5×5 网格只有 25 个格子,而英文字母表有 26 个字母,必须有一个格子容纳两个字母。标准惯例是将 I 和 J 合并为一个格子。加密时,明文中的 J 被视为 I 处理。解密时,通常可以根据上下文判断该字母究竟是 I 还是 J。某些实现将 Q 和 K 合并,或完全去掉 Q,但 I/J 合并是迄今最常见的做法。

生成关键词字母表

构建密文方阵时,从关键词出发,按以下步骤操作:

  1. 去除关键词中的重复字母。 例如,KEYWORD 保持不变(此处无重复字母),而 BALLOON 则变为 BALON。

  2. 处理 I/J。 若关键词中含有 J,将其视为 I。

  3. 写出去重后的关键词,然后按标准顺序追加字母表中其余字母(跳过已用字母,将 I/J 视为同一字母)。

  4. 逐行填入 5×5 网格,形成 25 个字符的序列。

以关键词 EXAMPLE 为例:

去重后:E X A M P L

剩余字母(跳过 E、X、A、M、P、L):B C D F G H I/J K N O Q R S T U V W Y Z

完整序列:E X A M P L B C D F G H I K N O Q R S T U V W Y Z

E X A M P
L B C D F
G H I K N
O Q R S T
U V W Y Z

分步加密

下面以明文 HELLO WORLD 为例,使用两个关键词进行加密:网格 2 使用 EXAMPLE,网格 3 使用 KEYWORD

第一步: 搭建四个网格。

网格 1(明文方阵,左上)——标准字母表:

A B C D E
F G H I K
L M N O P
Q R S T U
V W X Y Z

网格 2(密文方阵,右上)——关键词 EXAMPLE:

E X A M P
L B C D F
G H I K N
O Q R S T
U V W Y Z

网格 3(密文方阵,左下)——关键词 KEYWORD:

K E Y W O
R D A B C
F G H I L
M N P Q S
T U V X Z

网格 4(明文方阵,右下)——标准字母表:

A B C D E
F G H I K
L M N O P
Q R S T U
V W X Y Z

第二步: 将明文拆分为双字母组(字母对)。

HELLO WORLD 拆分为:HE LL OW OR LD

若明文字母数为奇数,则在末尾添加填充字母(通常为 X 或 Z)。

第三步: 加密每个双字母组。

对于每对字母,第一个字母在网格 1(左上)中查找,第二个字母在网格 4(右下)中查找。这两个位置构成一个跨越四个网格的矩形的两个对角顶点。

密文对从矩形的另外两个顶点读取:网格 2(右上)中与第一个明文字母同行、与第二个明文字母同列的字母,以及网格 3(左下)中与第二个明文字母同行、与第一个明文字母同列的字母。

加密 HE:

  • H 在网格 1 中位于第 2 行第 3 列。
  • E 在网格 4 中位于第 1 行第 5 列。
  • 网格 2 第 2 行第 5 列的字母为:F
  • 网格 3 第 1 行第 3 列的字母为:Y
  • HE 加密结果为 FY

对每对字母重复上述过程,即可得到完整密文。

第四步: 将所有加密后的字母对拼接成最终密文字符串。

解密

解密是上述过程的完全逆操作。每个密文对的第一个字母在网格 2 中查找,第二个字母在网格 3 中查找,矩形规则给出网格 1 和网格 4 中对应的明文字母。这种对称性使四方密码在两个方向上都便于实现。


选择高强度关键词

四方密码的安全性取决于两个关键词的质量。以下是选择关键词的指导原则:

长度与多样性

含有更多不同字母的较长关键词能生成混合程度更彻底的字母表。像"CRYPTOGRAPHY"这样的关键词(去重后有 10 个唯一字母)远优于"CAT"(只有 3 个唯一字母)。理想的关键词应使用尽量多的不同字母,同时又不至于长到难以记忆。

使用两个不同的关键词

网格 2 和网格 3 务必使用不同的关键词。为两个网格使用相同关键词会因引入对称性而削弱密码强度——密码分析师可以利用这种对称性发动攻击。若两个密文方阵完全相同,四方密码就退化为替换次数更少的更简单系统。

避免可预测的短语

以词典词汇、名人名言或个人信息(姓名、日期)为基础的关键词容易遭受字典攻击。密码分析师可以利用常见词语生成密文方阵,逐一验证每种组合。随机或半随机短语更为安全,但较难记忆。

实用建议

一种实用的折中方案是:选择一个易记但不寻常的短语,取每个词的首字母,再加以修改。例如,"My grandmother bakes 7 pies every Tuesday morning"可能生成"MGB7PETM"——对您来说易于记忆,对攻击者来说则难以预测。


四方密码与普莱费尔密码的详细比较

普莱费尔密码是最著名的双字母组密码,也是与四方密码进行比较的最自然参照。两者都使用 5×5 网格对字母对进行加密,但在结构、安全性和易用性上各有不同。

结构差异

特征普莱费尔密码四方密码
网格数量14
关键词数量12
网格排列单个 5×5 网格四个 5×5 网格的 2×2 排列
加密规则根据字母位置采用矩形、同行或同列规则始终采用矩形规则(无特殊情况)
同行字母对特殊规则(向右移位)由标准矩形规则处理
同列字母对特殊规则(向下移位)由标准矩形规则处理
反转字母对AB 和 BA 有关联规律AB 和 BA 产生无关联的密文

四方密码的安全优势

普莱费尔密码有几个广为人知的弱点,而四方密码能够有效规避:

没有特殊情况规则。 在普莱费尔密码中,两个字母位于同一行或同一列的双字母组遵循不同的规则,这些特殊情况会产生可被密码分析师检测到的规律。四方密码始终使用矩形规则,因为明文字母和密文字母位于不同的网格中,永远不会在同一个网格内处于同一行或同一列。

没有反转字母对规律。 在普莱费尔密码中,若 AB 加密为 XY,则 BA 加密为 YX。这种互反特性是一个重大弱点,因为英文中常见的反转双字母组(RE/ER、ES/SE、TH/HT)会产生可预测的密文规律。在四方密码中,BA 的加密结果与 AB 完全无关,因为两个密文方阵是不同的。

更大的密钥空间。 四方密码使用两个独立的关键词,各自生成独立的乱序字母表。与普莱费尔密码的单一关键词相比,密钥材料翻倍,使暴力破解和字典攻击的难度大幅提升。

更好的频率掩蔽效果。 由于四方密码对每个密文对的两个字母分别使用两个不同的乱序字母表,所得的双字母组频率分布比普莱费尔密码更平坦、更均匀,使密文的统计分析更加困难。

普莱费尔密码的适用场景

尽管安全性较弱,普莱费尔密码在实际中仍有优势:

  • 简单。 一个网格比四个更容易记忆和重建。
  • 快速。 单网格手工加密速度更快。
  • 历史沿用广泛。 普莱费尔密码在军事场合有大量教学和使用记录,经过训练的操作人员更易获得。

就教育目的而言,同时学习两种系统——并理解四方密码为何优于普莱费尔密码——对于深入掌握双字母组密码设计原理大有裨益。


频率分析与四方密码

为何双字母组密码能抵抗单字母频率分析

在单字母替换密码中,每个明文字母始终对应同一个密文字母,这保留了语言的统计特征,简单的频率统计便能揭示替换规律。四方密码这类双字母组密码对字母进行加密,同一个字母可能因配对对象不同而对应不同的密文字母。字母 E 与 T 配对的加密结果可能与 E 与 S 配对的结果完全不同。

这意味着单字母频率分析对四方密码毫无用武之地。密码分析师必须改为分析双字母组频率——即字母对的出现频率——而这比分析单字母要困难得多,因为可能的双字母组有 625 种(25×25),而单字母只有 25 种。

双字母组频率分析

英文文本确实具有特征性的双字母组频率(TH、HE、IN、ER、AN 是最常见的),足够长的密文可能会显露这些规律。然而,由于四方密码的两个密文方阵不同,打破了使普莱费尔密码双字母组具有一定可预测性的对称性,这些规律的分布也更为均匀。

实际上,仅凭双字母组频率分析破解四方密码需要极长的密文——通常在数千字符以上——即便如此,分析结果也只是候选答案而非确定答案。较短的消息(不足数百字符)在没有额外信息的情况下极难破解。

与 Hill 密码的关联

对基于矩阵的双字母组加密方法感兴趣的读者,不妨探索 Hill 密码。Hill 密码通过矩阵乘法对字母对(或更大的字母组)进行线性代数加密。虽然在结构上与四方密码迥异,但 Hill 密码同样具有同时加密多个字母的特性。两种系统提供了几何(基于网格)方法与代数方法处理同一问题的有趣对比。


Delastelle 的其他发明

双格密码

双格密码同样由 Delastelle 发明,使用单个波利比奥斯方阵将每个明文字母转换为一对坐标(行号和列号)。随后对坐标进行重排——一组字母的行号集中排列在前,列号紧随其后——然后将重新组合的字母对用同一波利比奥斯方阵转换回字母。

这种分离技术实现了扩散:每个密文字母依赖两个不同明文字母的坐标,使明文与密文之间的关系远比简单替换更难以分析。双格密码影响了德国在第一次世界大战中使用的 ADFGVX 密码的设计。

三格密码

三格密码将分离技术扩展至三维。27 个符号字母表(26 个字母加一个句号或空格)中的每个字符由三个坐标表示,这些坐标经重排后以三个为一组重新组合。三格密码比双格密码实现了更强的扩散,但手工操作也更为复杂。

Delastelle 的历史遗产

Delastelle 的工作代表了密码学思想的一次关键转变。在他之前,密码设计者主要关注替换——用其他字母替换字母。Delastelle 引入了将字母分解为子元素(坐标)、独立操控这些元素、再重新组合的思想。这种分离原理成为二十世纪密码设计的基础构件,并在现代分组密码(如 AES)所使用的替换-置换网络中得到回响。


实现四方密码

算法概述

四方密码加密算法可用伪代码概括如下:

function encrypt(plaintext, keyword1, keyword2):
    grid1 = standard_alphabet_grid()
    grid2 = keyed_grid(keyword1)
    grid3 = keyed_grid(keyword2)
    grid4 = standard_alphabet_grid()

    plaintext = remove_non_alpha(plaintext).upper()
    plaintext = replace_j_with_i(plaintext)
    if length(plaintext) is odd:
        plaintext += "X"

    ciphertext = ""
    for i = 0 to length(plaintext) - 1 step 2:
        r1, c1 = find_position(grid1, plaintext[i])
        r2, c2 = find_position(grid4, plaintext[i+1])
        ciphertext += grid2[r1][c2]
        ciphertext += grid3[r2][c1]

    return ciphertext

解密算法与加密算法完全相同,只是网格的角色对调:密文字母在网格 2 和网格 3 中查找,明文字母从网格 1 和网格 4 读出。

性能特征

四方密码对 n 个字符的明文以 O(n) 时间运行,网格查找为常数时间操作(每个网格只有 5×5,因此位置查找最多需要 25 次比较,或使用预计算索引达到 O(1))。内存占用极小——四个 25 字符数组加上输入和输出字符串。


历史应用与娱乐用途

军事应用

尽管四方密码从未像普莱费尔密码那样被采用为主要军用密码(英军在布尔战争至第二次世界大战期间都在使用普莱费尔密码),但它在各种情报场合有过有限的使用记录。它对普莱费尔密码已知攻击的抵御能力,使其在需要适度安全性而又不想引入机械密码机复杂性的场合颇具吸引力。

谜题与竞赛应用

四方密码是密码学谜题、密室逃脱和密码竞赛中的热门选择。美国密码协会(ACA)定期在其刊物《密码》(The Cryptogram)中收录四方密码挑战题目,许多 CTF(夺旗赛)竞赛也将四方密码作为中等难度挑战。

这种密码在上述场合的魅力来自其复杂性与可解性之间令人满意的平衡。它足够复杂,构成真正的挑战,同时结构清晰,系统分析无需计算机暴力破解便能将其攻克——前提是密文足够长。


常见问题

四方密码与二方密码有何区别?

二方密码(也称双重普莱费尔密码)只使用两个水平或垂直排列的网格。它使用类似四方密码的矩形规则加密双字母组,但只有一个关键词网格和一个标准网格(或两个关键词网格)。四方密码以 2×2 排列使用四个网格,提供更多混合,并消除了使二方密码存在一定脆弱性的某些对称性。四方密码通常被认为更为安全。

为什么要在网格中合并 I 和 J?

英文字母表有 26 个字母,但 5×5 网格只有 25 个格子。I/J 合并是最常见的解决方案,因为这两个字母形态相似,历史渊源深厚(J 在十六世纪由 I 演变而来),且在上下文中极少造成歧义。例如,在单词"MAJOR"中,字母 J 在加密时写成 I,产生"MAIOR";解密时,上下文使"MAIOR"显然代表"MAJOR"。另一种处理方式是将 Q 与 K 合并,或直接去掉 Q(由于 Q 几乎总是与 U 一起出现,其独立信息量极少)。

不知道关键词的情况下能破解四方密码吗?

可以,只要密文足够长。主要攻击方式是双字母组频率分析,利用某些字母对(TH、HE、IN、ER)在英文中出现频率远高于其他字母对这一事实。对于足够长的密文(通常需要数千字符),密码分析师可以将观察到的密文双字母组频率与预期的明文双字母组频率进行比对,从而推断关键词网格的部分内容。爬山算法模拟退火算法也可以通过反复测试随机修改并衡量解密文本与自然语言的相似程度来恢复关键词。较短的消息(不足数百字符)则非常难以破解。

四方密码用于现代密码学吗?

不。与所有古典密码一样,四方密码不符合现代安全标准。其密钥空间远远不足以抵抗计算机暴力破解,且已知明文攻击只需少量数据便能恢复关键词。现代加密算法(如 AES)在二进制数据上运行,密钥长度为 128、192 或 256 位,提供任何古典密码都无法企及的安全级别。然而,四方密码在密码学教育、娱乐性密码学,以及作为理解现代系统底层原理(扩散、混淆、密钥调度)的阶梯方面仍然极具价值。

四方密码有多少种可能的密钥组合?

每个密文方阵可以是 25 个字符(将 I/J 视为一个字母)的任意排列,共有 25!(约 1.55×10²⁵)种可能排列。两个独立的关键词网格合计,总密钥空间为 (25!)²,约为 2.4×10⁵⁰。对于手工分析而言,这是一个天文数字;但对于现代计算机而言则微不足道,这也是该密码不再用于实际安全场景的原因。实际上,由于大多数用户从关键词生成网格,有效密钥空间要小得多——受限于可能的关键词数量。

关于本文

本文是我们综合 四方密码 教程系列的一部分。继续了解古典密码学,并探索我们的交互式密码工具。

试用 四方密码 工具

通过我们的交互式四方密码工具,将所学知识付诸实践。

试用 四方密码 工具