使用书本文本的连续密钥密码示例
从使用经典文学作为加密密钥的真实世界示例中学习。了解《傲慢与偏见》、《双城记》和其他著名文本如何创建安全密文。
通过实际的流动密钥密码示例学习,比单纯的理论更能帮助你理解这种古典加密技术。本页展示了以经典文学作品和历史文献作为加密密钥的真实流动密钥密码示例。此处展示的每个示例都可以使用我们的流动密钥密码工具中的预设书本文本功能进行复现。
基础流动密钥密码示例
最著名的流动密钥密码示例来自 Terry Pratchett 的作品,由维基百科密码学文章推广传播。该示例使用流动密钥 "HOWDOESTHEDUCKKNOWTHATSAIDVICTOR" 演示了对消息 "DEFEND THE EAST WALL OF THE CASTLE" 进行流动密钥密码加密的完整过程。
密钥: HOWDOESTHEDUCKKNOWTHATSAIDVI
明文: DEFENDTHEEASTWALLOFTHECASTLE
密文: KSBHBHLALIDMVGKYZKYAHXUAAWGM
加密过程逐字符进行,使用塔布拉・雷克塔(方阵密码表)方法。第一个字符 D(位置 3)与流动密钥字母 H(位置 7)组合:(3 + 7) mod 26 = 10,得到 K。第二个字符 E(位置 4)与 O(位置 14)组合:(4 + 14) mod 26 = 18,得到 S。第三个字符 F(位置 5)与 W(位置 22)组合:(5 + 22) mod 26 = 1,得到 B。
要解密此示例,应用逆向公式:从密文值中减去流动密钥值。例如,K (10) 减去 H (7) 等于 D (3),S (18) 减去 O (14) 等于 E (4),以此类推。使用我们的流动密钥密码解码器即可即时验证这些计算。
使用编程文本的流动密钥密码示例
Kernighan 和 Ritchie 合著的《C 程序设计语言》提供了另一个在密码学文献中有据可查的经典示例。该示例使用第 63 页第 1 行:"ERRORS CAN OCCUR IN SEVERAL PLACES" 作为流动密钥。
密钥: ERRORSCANOC
明文: FLEEATONCE_
密文: JCVSRLQNPS_
加密过程遵循标准公式。F (5) 加 E (4) 等于 J (9)。L (11) 加 R (17) 等于 C (28 mod 26 = 2)。E (4) 加 R (17) 等于 V (21)。E (4) 加 O (14) 等于 S (18)。A (0) 加 R (17) 等于 R (17)。按此规律继续加密整个消息。
这个示例展示了一种重要的历史实践:"指示块"。通信双方通过编码引用指定密钥来源,例如 "KR63L1" 表示 "Kernighan and Ritchie,第 63 页,第 1 行"。这一系统实现了安全的密钥分发,而无需传输实际的密钥文本。
编程书籍等技术手册是绝佳的密钥来源,原因有几点:相同版本广泛可得,持有时不会引起怀疑,与叙事性散文相比包含相对高熵的文本,并且能提供连续的长段文字。
经典文学流动密钥密码示例:《傲慢与偏见》
Jane Austen 的《傲慢与偏见》提供了密码学教育中最受欢迎的流动密钥密码示例之一。那句著名的开篇 "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife"(凡是有钱的单身汉,必定需要一位太太,这是举世公认的真理)已经加密了无数练习消息。
密钥: ITISATRUTHUNIVERSALLYACKNOWLE
明文: MEETATNOONTOMORROWATTHEBRIDGE
密文: UXMLAMEIHUNBUJVIGWLERHGLEWZRI
字母 M (12) 与 I (8) 组合得到 U (20)。E (4) 与 T (19) 得到 X (23)。M (12) 与 I (8) 得到 L(12,经 mod 调整)。该模式贯穿整个消息,每个明文字符从不重复的流动密钥中获得一个唯一的移位量。
书本流动密钥密码示例:《双城记》
Charles Dickens 的《双城记》以文学史上最著名的开篇之一开头:"It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness."(这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代。)这段令人难忘的文字是较长消息的绝佳示例。
密钥: ITWASTHEBESTOFTIMESITWASTHEWORSTOFTIMES
明文: ATTACKATDAWNWITHTWOREGIMENTSANDCAVALRY
密文: ITOKXTWWEWHFWHTMYMIAWLAKJVEWWVTILKVDMK
Dickens 重复的措辞——仅两行中 "it was" 就出现了四次——在流动密钥文本中造成了局部模式。在加密较长消息时,选择重复度较低的密钥段落可以提高安全性。
历史文献流动密钥密码示例
《独立宣言》是另一个具有历史意义的密钥来源。其开篇 "When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another"(当在人类历史进程中,一个民族有必要解除将其与另一个民族相连的政治纽带时)提供了措辞正式、熵值良好的文本。
密钥: WHENINTHECOURSEOFHUMANEVENTSITBECOMES
明文: REINFORCEMENTSARRIVINGFRIDAYMORNING
密文: DPBLAQJWMGTUWEXGYPEDQIVIBXPJFVQQRRZKA
政治文件和建国文献在战时是实用的密钥来源——士兵和官员可以参考这些文件而不会引起怀疑。正式的语言和多样的词汇比日常通信提供了更好的熵值。
如何创建自己的流动密钥密码
创建有效的流动密钥密码密钥需要理解什么使一段文本在密码学上具有强度。理想的密钥来源应至少与明文等长,包含多样化的词汇且重复度最低,使用正式或技术性语言而非口语化散文,并且通信双方能获得相同版本。
选择散文而非诗歌。诗歌文本包含节奏、押韵和结构性模式,降低了熵值。技术手册、学术论文和历史文献通常比小说或短篇故事提供更好的安全性。在书籍中,中间章节通常比开头或结尾提供更多样化的文本。
避免以下类型的文本:诗歌或韵文(可预测的模式)、剧本(格式化的痕迹)、列表或索引(低熵)、含有大量对话的文本(重复性的言语模式),以及极其著名的段落(容易被攻击者猜到)。
亲自尝试这些流动密钥密码示例
练习一:使用《白鲸》的开头对消息 "ATTACK AT DAWN" 进行加密:"Call me Ishmael. Some years ago—never mind how long precisely—having little or no money in my purse." 从流动密钥中去除空格和标点符号。验证你的结果是否与预期密文一致。
练习二:使用流动密钥 "CRYPTO" 解密密文 "MSOKKF"。这个较短的示例帮助你在尝试更长文本之前理解基本机制。对每个字符位置应用公式:P[i] = (C[i] - K[i] + 26) mod 26。
练习三:使用书架上的一本书创建自己的流动密钥密码示例。选择一段 50 个字符的文字作为流动密钥,加密一条短消息,然后挑战朋友来解密它。分享书名、页码和起始位置,但不要提供具体文本。
使用我们的流动密钥密码工具来检验你的答案并试验不同的书本文本。"加载示例"按钮提供了预配置的演示,你可以对其进行修改和探索。