上回书说到,我们可以根据栅栏的一些特征判断这个密码是否为栅栏加密,但是很多情况下,我们会得到一串符合格式,但没有keyword的密码,例如:

hsf76svlmz635lx

栅栏密码转换器_栅栏密码 python_密码学简介和栅栏密码,恺撒密码

ufs23fiyzm364yk

栅栏密码转换器_栅栏密码 python_密码学简介和栅栏密码,恺撒密码

ldh34drvna475vp

是不是看上去三脸懵逼!

好吧,老实说,解码组也讨厌这种东西,不过它们都是有基本套路的。

实际上它们是以下明文的三种不同加密形式

fuh76urban635bp

第一个使用ROT13加密栅栏密码转换器,第二个使用Atbash加密,第三个使用Morse加密。接下来,我会依次讲解这三种加密方式。

①ROT

ROT,即凯撒移位,是最古老的加密方式之一。

凯撒移位指的是,把所有字母按照字母表进行一定数目的偏移,从而对明文进行加密。

例如:

A→D
B→E
C→F
……
W→Z
X→A
Y→B
Z→C

而ROTx指的则是把字母在字母表后位移x位,上表是ROT3。

栅栏密码 python_密码学简介和栅栏密码,恺撒密码_栅栏密码转换器

(图片来自维基百科)

在解码中最常被用到的是ROT13,为什么呢?因为英文字母有26个啊~

以下是ROT13的部分对照表

A→N
B→O
……
N→A
O→B
……

可以看到,ROT13加密的密文,只要再进行一次ROT13加密,就可以得到明文,由于这玩意非常方便,所以正式的加密中几乎完全不会用到(用了就可能上新闻),倒是在论坛黑话之类的地方被广泛应用。

ROT密码的一个特征是:词频也会被平移。因此假如截获一封使用ROT加密的足够长的信息,就可以通过字频/词频统计发现它的加密方式以及具体平移位数。ROT作为一种较弱的加密方式,在现代已经几乎不会被单独使用,而是被作为更复杂的加密中的一个基础步骤,例如Vigenère加密。尽管该加密方式与ROT渊源颇深,但是与这次的解码主题相关性不大,因此暂且按下不表。

在解码中,ROT的特征在于数字无需进行改变。之前介绍过的网站中有ROT1~25的快速转化器,只要把怀疑是ROT的密文丢进去,挨个看有没有keyword,就能找到正确的解法。

栅栏密码转换器_栅栏密码 python_密码学简介和栅栏密码,恺撒密码

②Atbash

Atbash与ROT有异曲同工之妙,Atbash的加密方法是:把字母表看成一条直线,然后把每个字母替换成对称的字母,例如:

A→Z
B→Y
C→X
……
X→C
Y→B
Z→A

不难看出,Atbash与ROT13一样,只要对Atbash的密文进行Atbash,就能得到原文,因此,它于ROT13的优缺点都是相近的。

不过,在解码中,Atbash有一种特别的应用姿势:数字Atbash和十六进制Atbash。其本质与字母的Atbash一样,都是把需要变换的元素按照某个顺序写成一列,然后作对称的映射。

数字Atbash:

0→9
1→8
2→7
……
8→1
9→0

值得注意的是,标准密码格式中,数字不能是0和1栅栏密码转换器,因此,如果看到数字部分有0和1而没有8和9,那么优先考虑连同数字一起进行atbash。

同理,也有十六进制Atbash:

0→E
1→D
2→C
……
C→2
D→1
E→0

Atbash本身并不可怕,但是如果在Atbash的变换表上用ROT进行移位,解密就会变得较为困难,配合其他移位手段也可以让密码变得难以解读,这显然不是PAC希望的,即使是Atbash结合ROT的密码也很罕见。

之前的密文

ufs23fiyzm364yk

连带数字一起进行atbash,就变成了明文:

fuh76urban635bp

③Morse

鼎鼎大名的莫尔斯电码,想必大家都不会太陌生,通常,如果上述两种方法都失效,就要考虑是不是进行了莫尔斯加密。莫尔斯密码通常有两种加密形式:

1.Morse Flip

这种加密方式是把所有的点和划反转,对照表会是这样:

abcdefghijklmnopqrstuvwxyz
nj?wtqu?mbryiasxfkoeg?dpl?
0123456789
5678901234

数字等同于平移5位,可以看出,字母c,h,v是不能进行Morse Flip的,如果密文含有数字5和6,或者字母c创业项目,h,v,则不考虑Morse Flip。

Morse Flip非常烦,因为它不能用现成的解码工具进行,而需要开个word手动替换,操作步骤还比较多。

2.

Morse Reverse

这种加密方式是把密文换成莫尔斯码后,直接反过来读(空格位置不变),对照表是这样:

abcdefghijklmnopqrstuvwxyz
nv?uelwhi?kfmaopyrstdbgxq?
0123456789
0987654321

数字等同于0-9的Atbash,字母c,j,z不能进行Morse Reverse。所以如果含有0,9和c,j,z,则不考虑Morse Reverse。虽然它比前面那个简单不少,但是PAC不太喜欢用。另外,它会导致明文也倒序(上表中已经消除了倒序的影响)。

之前的密文

ldh34drvna475vp

因为含有v,所以不能进行Morse Flip,使用Morse Reverse后,变成

pb536nabru67huf

再次反转

fuh76urban635bp

课后习题(无奖)

817783bab78c75868675837b848abcbdbc7a83

提示1:该密码不重复地使用了本文中介绍过的至少四种加密方式。

提示2:xana自己也不记得这个密码答案是什么了……

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注