列置换密码 (Columnar Transposition Cipher):

这是最常见的置换密码类型。明文被写入一个矩形表格中,然后按照密钥指定的列的顺序读取密文。

  • 加密: 选择一个关键词作为密钥。将明文按行写入一个表格,表格的列数等于密钥的长度。然后,根据密钥字母在字母表中的顺序,重新排列表格的列,并按列读取密文。
  • 解密: 知道密钥后,可以重建表格,并按正确的顺序读取明文。

例子:

  • 明文: meet me after the toga party
  • 密钥: CRYPTO
  1. 构建表格:
1
2
3
4
5
C R Y P T O
m e e t m e
a f t e r t
h e t o g a
p a r t y x

(x 用于填充最后一行)

  1. 按字母顺序重新排列列:
1
2
3
4
5
C O P R T Y
m e t m e e
a t r e f t
h a g o e t
p x y t r a
  1. 按列读取密文: matrpx etaerg meoett hgaet ytfex

2. 路径置换密码 (Route Cipher):

明文被写入一个几何形状(例如螺旋形、对角线等),然后按照预定的路径读取密文。

3. 双重置换密码 (Double Transposition Cipher):

对明文进行两次列置换,使用不同的密钥或相同的密钥两次。这增加了密码的安全性,使其更难破解。

置换密码的弱点:

  • 频率分析: 虽然置换密码隐藏了字母的顺序,但字母的频率保持不变。通过分析密文中字母的频率,可以推断出明文的结构。
  • 短密钥: 如果密钥很短,则可以尝试所有可能的密钥组合来破解密码。
  • 已知明文攻击: 如果知道部分明文和对应的密文,则可以推断出密钥。