维吉尼亚密码是一种经典的多表密码系统,原理是通过一系列的凯撒密码加密增加其破解难度。维吉尼亚使用起来非常简单,只需要指定一串移位序列即可。但破解起来却非常困难,被称为“不可破解的密码”。
选择一串密钥,这个密钥可以是数字也可以是字母。一般来说使用字母,因为这样密钥便于记忆。原文和密钥都可以被表示为数字的形式,具体规则是这个字母在字母表中的次序,比如A是序号是2,B的序号是3,以此类推。加密的原理就是将原文的值对应的用密钥进行凯撒密码加密。
举个例子:
密钥是WOLF
明文:THIS WORLD DOESNT NEED A HERO IT NEEDS A PROFESSIONAL
密钥:WOLF WOLFW OLFWOL FWOL F WOLF WO LFWOL F WOLFWOLFWOLF
密文:QWFY CUXRJ JUKYTZ TKKJ G NKXU OZ TKKJY G VXULKYYOUTGR
比如第一个字符是T,序号20,第一个字符对应的密钥是W,序号23,那么密文就应该是序号(20+23)mod26的字母,即Q。解密时只需要按照同样的顺序减回来即可。这种加密方式本质上是一系列的凯撒密码的组合,但是却让暴力破解几乎不可能。首先密钥的长度是不确定的,其次对于每一种密钥长度n,都有26^n种可能性。如果密钥长度超过10,就已经超过100万亿种可能性了。这样的加密方式毫无疑问是暴力破解的噩梦,即便机器的性能足够,也还有判断猜解结果是否正确的问题。
毫无疑问,这是个强壮又好用的加密系统,但这并不意味着它是不可破解的。但是通常来说,我们只能破解比较长的,有意义的文本加密后的密文。这是因为我们需要使用一些关于英文文本一些统计数据。
对于破解,我们首先要解决两个问题:密钥长度,具体的密钥。
我们要首先猜解出正确的密钥长度,不然长度不对,再努力都是白费。
这一步我们通过计算每种密钥长度的重合指数(CI)来判断这样划分后的文本与常规英文文本的接近程度。
下面附一个实战案例:
首先猜解秘钥长度,12和24的CI最高,24又是12的倍数关系,这代表这两个值非常有可能是秘钥长度。
假设长度为12,猜解key
最后,如果大家有编程相关需求欢迎通过微信公众号联系我们。
微信公众号:320科技工作室。