置换式密码
置换式密码(也称换位式密码,转置密码或移项式密码,英语:Transposition Cipher)是一种密码学中的加密方法,通过打乱明文中各字符的相对位置实现加密。打乱后生成的文本称为密文。与之相反的是,替换式密码不改变明文中各字符的位置,而是改变字符本身。
替换和置换两种加密手段经常组合在一起使用,如ADFGVX密码等古典密码或现代高级加密算法(AES)等复杂、高质量的加密方法。
基本原则
使用密钥可以将明文重新排列成密文,使得密文的字符看起来就像打乱的拼图一样杂乱无章。例如,明文 THIS IS WIKIPEDIA 可以加密为 TWDIP SIHII IKASE。在没有密钥的情况下,生成的消息极难破译,因为字符有意义的排间列方式可以有很多种。
即使没有密钥,密码分析者仍可以通过猜测可能的单词或短语破译密文,但这样重建明文需要耗费大量时间。相比之下,拥有密钥的人可以轻松地完成重建。
假设以密钥 CIPHER 加密一段文字 THIS IS WIKIPEDIA,可以先将明文中的各字母依次写在方格中,然后按照密钥中各字母的字母顺序(例如,“C”为第一个,而“E”为第二个)按列读取,形成密文。实际流程如下:
C I P H E R 密钥 1 4 5 3 2 6 顺序(密钥中的字母,按字母序) T H I S I S 明文(THIS IS WIKIPEDIA) W I K I P E D I A * * *
按顺序读取列得到:
#1 TWD, #2 IP, #3 SI, #4 HII, #5 IKA, #6 SE
故密文为:
TWDIP SIHII IKASE
以上的密文刻意以5个字母为一“组”书写,这是使密文更易于阅读的常用技术。“组”间的间隔与明文中单词间的间隔无关,因此不携带任何有关明文的信息。
实践中,像这样简短且带有可预测关键词的密文几乎可以立即通过密码分析技术破解。同时,加密过程中的一点小错误可能会使整个密文毫无意义。
但如果使用正确——满足明文较长(100个字母以上)、没有可以简单猜到的字词,每条密文对应唯一密钥、使用复杂的置换方法等要求——仅靠猜测破解密文从数学角度上说是不可能的。
密码棒
密码棒(英文:Scytale)是古希腊人使用的一种产生置换密码的机械装置。该装置由一个圆柱体和缠绕其上的带状物组成。将写有明文信息的丝带缠绕到圆筒外侧后观察圆筒,即可得到字母被重新排列的密文。然而,由于密文中字母的排列顺序只与所用圆筒的直径相关,只要有直径足够相近的圆柱体,就可以很容易地解密。 [1]
例如,加密信息 WE ARE DISCOVERED FLEE AT ONCE(意为:我们被发现了,立即撤退),将圆筒水平放置,而带状物在垂直方向上缠绕。如果圆柱体一周容纳三个字母,则密码器写出:
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 .
密码器读出:
WOEEV EAEAR RTEEO DDNIF CSLEC
栅栏密码
栅栏密码(英文:Rail Fence Cipher,也称篱笆密码)是置换密码的一种形式,因其编码方式而得名。在栅栏密码中,明文向斜下方写入假想的栅栏和连续的“轨道”上,触底时向斜上方继续书写,如此反复。最后按行读取,形成密文。
加密信息 WE ARE DISCOVERED FLEE AT ONCE,如果使用三条“轨道”加密,则密码器写出:
W . . . E . . . C . . . R . . . L . . . T . . . E . E . R . D . S . O . E . E . F . E . A . O . C . . . A . . . I . . . V . . . D . . . E . . . N . .
读出:
WECRL TEERD SOEEF EAOCA IVDEN
路径密码
在路径密码(英文:Route Cipher)中,明文首先以给定尺寸的网格写出,然后以密钥中给定的模式读出。例如,加密信息 WE ARE DISCOVERED FLEE AT ONCE:
W R I O R F E O E E E S V E L A N J A D C E D E T C X
如果密钥指定“从右上角开始,顺时针向内螺旋读取”,则密文为:
EJXCTEDEC DAEWRIORF EONALEVSE
比起栅栏密码,路径密码的密钥存在更多的可能性。对于有一定的长度的消息,可能的密钥数量非常多,即使是现代计算机器也难以枚举。但这并不意味着加密者可以高枕无忧。如果密钥的路径使密文中留下过多的明文块,甚至只是简单地反转文本,密码分析者可能可以很快理解路径,从而破解密文。
列位移密码
在列位移密码中,消息按行写下,然后按列读取。其中,行的宽度和列的读取顺序都由一个关键词决定。例如,关键词 ZEBRAS 由6个字母组成,因此行的长度为6;关键词中各字母的字母顺序为“6、3、2、4、1、5”,说明按列读取时最先读从左起第5列。
在按行写下消息时,有可能出现最后一行长度不同的情况。一般来说,列位移密码中任何空白都应以空值填充;在不规则的列位移密码中,空白部分留空。用作空值的字母可以由加密方随意选择,因为它们只是填满不完整的行(或列),其本身并不是消息的一部分。
例如,假设我们使用关键词 ZEBRAS 加密明文 WE ARE DISCOVERED FLEE AT ONCE,并添上五个空值(QKJEU)。在常规的列位移密码中,写入方格如下所示:
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 Q K J E U
密文读出为:
EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE
若为不规则的列位移密码,写入方格:
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
密文读出为:
EVLNA CDTES EAROF ODEEC WIREE
破译列位移密码时,接收者必须通过将密文长度除以密钥长度来计算出列长度,将密文按列写进方格中,然后通过密钥给出的顺序来重新排序列。
参见
参考资料
- ^ Smith, Laurence Dwight, Cryptography / The Science of Secret Writing, New York: Dover: 16, 92–93, 1955 [1943]