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


本工具可以将英文字母、数字和标点符号字符以及支持UNICODE字符包含中文中文汉字等字符加密转换成摩尔斯电码,同时可以将摩尔斯密码解密转换成可识别字符。

中文摩尔斯密码

本工具可以将英文字母、数字和标点符号字符以及支持UNICODE字符包含中文中文汉字等字符加密转换成摩尔斯电码,同时可以将摩尔斯密码解密转换成可识别字符。
在线栅栏密码加密解密工具。栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。

栅栏密码加密/解密【W型】

在线栅栏密码加密解密工具。栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。
在线凯撒密码加密解密工具。著名的凯撒密码是代换密码的一种,据说是罗马共和国末期的军事家、政治家,罗马帝国的奠基者凯撒率先使用加密函,因此这种加密方法被称为凯撒密码。凯撒密码的原理很简单:通过把字母移动一定的位数来实现加解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量为3时,所有的字母(不区分大小写)A被替换成D,B被替换成E,Z被替换成C。

凯撒密码加密/解密

在线凯撒密码加密解密工具。著名的凯撒密码是代换密码的一种,据说是罗马共和国末期的军事家、政治家,罗马帝国的奠基者凯撒率先使用加密函,因此这种加密方法被称为凯撒密码。凯撒密码的原理很简单:通过把字母移动一定的位数来实现加解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量为3时,所有的字母(不区分大小写)A被替换成D,B被替换成E,Z被替换成C。
在线XXEncode加密解密工具,提供XXEncode编码(XX编码)、XXencode解码(XX解码)、以及XXencode编码原理介绍、编码算法说明!

XXEncode加密/解密

在线XXEncode加密解密工具,提供XXEncode编码(XX编码)、XXencode解码(XX解码)、以及XXencode编码原理介绍、编码算法说明!