ADFGX密码加密/解密

密钥
关键字

1918年,第一次世界大战将要结束时,法军截获了一份德军电报,电文中的所有单词都由A、D、F、G、X五个字母拼成,因此被称为ADFGX密码。ADFGX密码是1918年3月由德军上校Fritz Nebel发明的,是结合了Polybius密码和置换密码的双重加密方案。A、D、F、G、X即Polybius方阵中的前5个字母。

加密

ADFGX密码本质是字符替换,然后进行移位,字符替换是很容易理解的,举个例子,消息为nintysecu,采用密码表phqgmeaynofdxkrcvszwbutil,密码表进行分布之后如下

\ADFGX
Aphqgm
Deayno
Ffdxkr
Gcvszw
Xbutil

(类似的表被称为Polybius方格,也就是棋盘密码,用横纵坐标来代替具体内容)

替代的顺序为AA-> p AD->h DA->e诸如此类

其实我们可以想到, 如果仅仅是做这一步,如果需要做对应的加解密程序的话,并不需要真的考虑棋盘,考虑到密码替代覆盖范围,可以直接定义AA=p AD=h之类进行处理,棋盘的存在主要是用于移位时的理解

通过棋盘,可以将上面的消息转为DG XG DG XF DF GF DA GA XD,当然空格只是一种表现形式,为了将各个字母区分

此后还需要一串长度至少为2且建议至多不超过消息长度-1的字符串作为移位密钥,至于长度限制的原因,主要为了避免移位失败,移位的过程如下

先定义一个密钥为china,此时密钥长度为5,则将上方替换后的消息进行分割为长度为5的字符串组,得到DGXGD GXFDF GFDAG AXD,将分组按在消息中的先后顺序排列,得到

CHINA
DGXGD
GXFDF
GFDAG
AXD

将上面的细分下来,就是

CHINA
DGXGD
GXFDF
GFDAG
AXD

china按字母顺序重新排列,得到achin

ACHIN
DDGXG
FGXFD
GGFDA

AXD

然后从上往下读,得到最终密文DFG DGGA GXFX XFDD GDA,当然空格不是必须的,仅仅是一种简单的表现形式。

解密

假设我们拿到了密文DFGDGGAGXFXXFDDGDA,移位密钥china,密码表phqgmeaynofdxkrcvszwbutil

先计算密文长度为18,移位密钥长度为5,则可以推算出移位密钥中有三个字母下会排下4个字母,移位密钥前三位是chi,因此chi下会排4个字母。

将密钥china按照字母顺序排列,得到achin,然后开始排列18个字母,其中chi排4个,其他排3个,得到

ACHIN
DDGXG
FGXFD
GGFDA

AXD

然后排列回来

CHINA
DGXGD
GXFDF
GFDAG
AXD

一行一行读取,两两分割,然后对照密码表取回正确消息nintysecu

思考

在ADFGX的变换中,一共使用了两种变换手法,一种是棋盘密码,但实际上可以直接理解为单表替换密码,只是使用了二维坐标来表示,二来是转置密码,不过转置之前增加了移位密钥,变换了列排序,这也被称为列移位加密。

替换密码的本质就是用一/多个字符替换为另一/多个字符,这是古典密码中经常出现的操作,比如凯撒、rot13、维吉尼亚等,本质上都是短单元(一个或几个字符)替换,只不过有些密码表是动态的,有些是写死的。

消息在经过棋盘密码替换之后,得到了以ADFGX五个字母为基础的密文,记为R,将R以移位密钥长度为单位分组并更换列顺序,然后使用转置密码进行处理。


在线文件Hash计算工具

文件Hash计算

在线文件Hash计算工具
传统型栅栏密码加密/解密在线工具,本工具所用的栅栏密码的加密/解密算法为传统型。栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。

栅栏密码加密/解密【传统型】

传统型栅栏密码加密/解密在线工具,本工具所用的栅栏密码的加密/解密算法为传统型。栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。
维吉尼亚密码在线加密/解密工具,维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。

维吉尼亚密码加密/解密

维吉尼亚密码在线加密/解密工具,维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。
异或(XOR)运算加密/解密在线工具,通过位运算的“^”异或运算符把字符串与一个指定的值进行运算,从而改变字符串中每个字符的值,这样就可以得到一个加密后的字符串;当把加密后的字符串作为程序输入内容后,异或运算会把加密后的字符串还原为原有字符串的值。

异或运算加密/解密

异或(XOR)运算加密/解密在线工具,通过位运算的“^”异或运算符把字符串与一个指定的值进行运算,从而改变字符串中每个字符的值,这样就可以得到一个加密后的字符串;当把加密后的字符串作为程序输入内容后,异或运算会把加密后的字符串还原为原有字符串的值。