ADFGX密码

ADFGX密码简介

ADFGX密码是德军在第一次世界大战期间使用的密码,它和ADFGVX十分相似。ADFGX密码也是一种分组密码,它将明文字符转换为ADFGX中的两个字符。ADFGX这五个字母并不是随意选择的,而是因为这五个字母在摩斯电码里听起来非常特殊,便于手抄员识别。

ADFGX密码示例

首先构造密钥方阵:

    A D F G X
    ---------
A | p h q g m 
D | e a y n o 
F | f d x k r
G | c v s z w 
X | b u t i l

假设我们要加密字母a,先取出a同一行最左侧的字母D,在取出a同一列最顶部的字母D。依次类推,attack被加密为DD XF XF DD GA FG。现在它只是一个稍微特殊点的简单替换密码,使用爬山算法很容易破解。

接下来再使用密钥为GERMAN列换位密码对其再进行一次加密:

G E R M A N       --->      A E G M N R
-----------       --->      -----------
D D X F X F       --->      X D D F F X
D D G A F G       --->      F D D A G G

则加密后的密文为:XF DD DD FA FG XG

ADFGX密码的程序实现

>>>from pycipher import ADFGX
>>>a = ADFGX('phqgmeaylnofdxkrcvszwbuti','HELLO')
>>>a.encipher('defend the east wall of the castle')
'FDFDDXGFDDGFDFDDGDAADXADAXAGADDDDDADGDGDGXAGGFXAAXDFGGGD'
>>>a.decipher(_)
'DEFENDTHEEASTWALLOFTHECASTLE'

ADFGX密码的密码分析

在CRYPTO 84的密码学论文集《ADFGVX密码系统的密码分析》一文中讨论了ADFGVX密码的密码分析。但是,这篇论文并没有公开,此处会尽快更新。