ADFGX密码加密/解密

密钥
关键字

“一个小工具箱”微信小程序版,换新归来。

“一个小工具箱”微信小程序致力于为您打造一个便捷好用的小工具集合,囊括文字编辑、计算换算、日期时间、图像图形、日常生活等多种实用小工具。

“一个小工具箱”微信小程序现已更新至3.0版本,汇集众多网站同款小工具。

打开微信就能用,无需安装,用完即走。

工具集合小程序,一个就够了。

在微信搜索栏输入“一个小工具箱”,点击进入即可使用所有小工具。

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以移位密钥长度为单位分组并更换列顺序,然后使用转置密码进行处理。


XTEA密码的设计者是剑桥计算机实验室的戴维·惠勒和罗杰·李约瑟,该算法在1997年的一份未发表的技术报告中提出(李约瑟和惠勒,1997年)。XTEA加密算法是TEA的升级版,增加了更多的密钥表,移位和异或操作等等。

XTEA加密/解密

XTEA密码的设计者是剑桥计算机实验室的戴维·惠勒和罗杰·李约瑟,该算法在1997年的一份未发表的技术报告中提出(李约瑟和惠勒,1997年)。XTEA加密算法是TEA的升级版,增加了更多的密钥表,移位和异或操作等等。
XXTEA,又称Corrected Block TEA,是XTEA的升级版 ,设计者是剑桥计算机实验室的罗杰·李约瑟和大卫·惠勒,该算法在1998年10月的一份未发表的技术报告中提出(惠勒和李约瑟,1998年)。它不受任何专利的约束。

XXTEA加密/解密

XXTEA,又称Corrected Block TEA,是XTEA的升级版 ,设计者是剑桥计算机实验室的罗杰·李约瑟和大卫·惠勒,该算法在1998年10月的一份未发表的技术报告中提出(惠勒和李约瑟,1998年)。它不受任何专利的约束。