跳到正文
Cipherloom密码织机

CIPHER/TRANSPOSITION/SCYTALE

斯巴达卷棒密码

发布 2026 年 9 月 5 日 · · 6 分钟阅读

卷棒密码不给字母改名,它只打乱顺序。把一条皮条缠在木棒上,横着写过去,再解开。所有字母都还在,明明白白地摆在那里,只是顺序错了。此后两千年里所有置换密码都是这一个动作的改良。

时代
古典时代
类型
置换
密钥空间
staff diameter
难度
入门
密文栅格图版:斯巴达卷棒密码
图版 scytale · 置换

I现象

把明文按每行 n 个字母写下来,n 就是木棒的棱数;然后按列读,而不是按行读。

取 n = 4、消息 LOOM KEEPS ITS OWN COUNSEL:

LOOM
KEEP
SITS
OWNC
OUNS
EL

自上而下逐列读取,得到 LKSOOE OEITWUL OETNN MPSCS——每个字母都还在,但没有一个还待在原来的位置。

与凯撒最关键的区别在于:字母频率完全没变。密文中 E 的数量与明文中 E 的数量一模一样。被攻击的只是位置。

II密钥空间

密钥是木棒的直径——一块木头,而不是一个数字。这既迷人又不实用。

由于直径在原理上连续,有效密钥空间其实是消息长度的约数集合。对一条 60 字母的消息,约数是 1、2、3、4、5、6、10、12、15、20、30、60;去掉 1 与 60(恒等变换),还剩 10 个。不到三个半比特——比凯撒的空间还小。

更糟的是攻击者根本不需要猜。每个可能的直径都会产出一个候选明文,而语言是一眼可辨的。十五次尝试就是一杯咖啡的时间。

这是置换密码反复教给人的一课:密钥空间不是物理物品的数量,而是这些物品能对这一条特定消息做出多少种区分。

III加密步骤

  • 选定直径 n。历史上这就是你实际持有的那根木棒。
  • 去掉空格与标点,把明文写成一段连续的大写字母串。
  • 把字母串写进一张 n 列的表,从左到右、从上到下填充。
  • 若表不能填满,用填充字母补齐最后一行——接收方必须知道哪些字母要丢弃。
  • 自上而下、自左而右逐列读取。这就是密文。
  • 把皮条重新缠上木棒照着写——这个物理动作与建表是等价的。

IV解密步骤

  • 先数密文字母个数。若木棒直径是 n,用长度除以 n 得到行数。
  • 这次按列向下把密文写进一张 n 列的表——也就是发信人用过的那张表。
  • 按行横向读出,恢复明文。
  • 丢弃末尾的填充字母。
  • 若不知道 n,就试长度的每一个约数。对每个候选按行读出,保留读得通的那一个。

V弱点

易位构词法(anagramming)。 只有密文的攻击者,可以把字母按每一种可能的宽度排成矩形,再逐列读。正确的宽度会自己暴露:某一瞬间列里出现了词。

频率未被触动。 凯撒至少还打乱了“哪个字母常见”。卷棒把语言的频率画像原样留下,这意味着所有统计工具都可以不加修改地使用。

长度是破绽。 能排成完整矩形的列数是极短的清单,攻击者仅凭消息长度、不需要任何密钥材料就能算出来。

物理密钥很脆弱。 木棒可以被偷、被量、被复制。不换硬件就无法换密钥,也无法在同一场战役里对不同消息使用不同密钥。

VI实战挑战

密文

TOESP EHOAA AREMV LTNLW ELTS

提示: 四列。按列写下去,按行读出来。

展开答案

明文

THE LOOM WEAVES ALL PATTERNS

本条目为历史与教育内容。相关描述不是绕开任何在用系统安全措施的指引,也不构成专业建议。

·史料

普鲁塔克在《吕山德传》中描述了斯巴达的 skytale:一条皮条缠在木棒上、横着书写,寄给持有相同木棒的将领。据记载它曾让一次对波斯的远征保密成功,也是已知最早为密码目的而非书写目的专门设计的器械。它的弱点——密钥是一件必须运输、复制并保护的实物——此后一直也是所有密钥分发系统的弱点。

·继续读

卷棒属于置换密码,而置换从未消亡——它只是与其他手法组合。一战德军的 ADFGVX 野战密码是“分馏替换 + 列置换”;二战英国 SOE 特工使用的双重置换系统,其实就是把卷棒的思路用了两遍。

它在现代的直系后代是分组密码里的置换盒。AES 在交替的轮中执行替换(S 盒)与置换(ShiftRows 与 MixColumns),其假设是两种操作单独都不强、合起来才强——这恰恰是斯巴达木棒没能形成的直觉。

下一台织机:pigpen-cipher 回到替换,但用画出来的框架取代字母表。

+相关织线