最近算法幼稚联想——关于加密

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

最近接触到加密还是因为亮陀的一个游戏,在他的blog上一个密码游戏,很是有趣的一些英文排列,帖子的摘要是vegenere。后来我知道,这是加密方法名,要不然我怎么破阿。

既然知道了使用vegenere方法加密,我便去网上搜索一下它的算法,原来我在电子商务课上已经看见过一次了,利用密钥和字符矩阵加的密,读者请自行搜索算法详解。

既然知道算法了,首先编个程序在要求输入密钥的情况下对密文进行解密。下一步就是获取密钥了。

下面我要写的这些感想是基于我与亮陀这一次的经历,因此必然有很多不符合安全法则,我仅仅用它来表达一点想法而已。

因为亮陀的密文是一个个用空格分割的字符串,看起来应该是直接从明文的拼音或英文单词转换过来的,搜索一下,发现似乎没有太有规律的子串,没有重复的子串,于是再看,发现有4个1字符的单词,和两个7字符的单词,其他皆处于2-6之间,考虑到拼音里没有超过6个字符的拼法,所以初步认定明文是用的英文。

第三,第一个单词的密文是of,只有两个字符,考虑到vegenere的密钥显然不可能用一个仅有1位的密钥,因此该单词不存在密钥的循环,所以我们尽可以猜测密钥前两个字符的组成。

第四,考虑到一般人设置密钥应该会用一个单词,没有太多人会喜欢选用ryxbnqxw作为一个密钥的记忆,因此,我们在猜测密钥前两字母的时候便有了很大的选择性,像xd这种在英文单词里出现概率接近于零的排列基本可以排除。同时,由于明文有含义,又有上述假设是用英文写成,所以使用猜测的密钥解出的明文也应该是常见的字母组合,加上仅有2字母,可辨认度更高了,如to,as,so,之类

因此另编一个程序,用来测试密文of针对2个字符、26*26中可能的密钥而得到的明文,将所有结果写出来,现在我们只需要用眼睛检查一下这676个密钥+明文组合,选出其中密钥和明文看起来都不那么别扭的组合,这样的组合是不多的,经挑选,我选出了下列这些:

as:on

br:no

bx:ni

ch:my

fl:ju

on:as

os:an

并不多,其中,on , no , my , as , an 可能性稍大,

于是结合加密人的一些偏好之类的信息,就很有可能猜出密钥,比如chinese,于是终于玩出了亮陀留下的游戏。当然这仅是一个游戏,因此特别简单,我也才能在重重提示下想到这些。

很巧的是,第二天的网络课也正好讲到密码,于是兴趣已经被很大地激发出来的我思维就比较活跃了,在听RSA公开密钥算法的时候,突然有了一个想法。RSA算法利用生成两个大素数,然后弄出一组数,用来通过幂计算密文。

但我想,这样虽然得到了一个字母对应的是一个4位数码,但是26个字母与数码之间是一一对应的,只可能有26种数码,不像vegenere中同一个字符可能会有几种表示,这样的话,由于词频统计已经表明某些最常出现的字母了,如e , t等,因此对数码进行统计可以比较大的缩小搜索范围,加快破解速度。

这是我突然冒出来的一个想法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航