上一篇文章提到一个任意单表替换密码算法如果k=n,那么密钥空间为k!
假设是英文字母表,密钥空间为26!,用穷举法破解不可行。
那么有其他办法吗?答案是肯定的。
我们知道语言具有一定特征的
1.偏用现象:在各种语言中,各个字母的使用次数是不一样的,有的偏高,有的偏低
2.频数:一个字母在一篇文章中出现的次数
3.使用频率:一个字母的频数除以文章的字母总数
英文字母的使用频率分布
统计分析上表得到:
某些特定的文章会含有这样的特征:
开头结尾特征,开头和结尾受到固定格式的限制。
(在电影模仿游戏中,图灵破解Enigma的困难在于,当时每24小时更换一次秘钥,因此图灵必须在24小时内破解出来,否则情报就会越堆越多,甚至失效,即便事后破解出来也毫无意义。以当事的计算能力是不可能在24小时内破解出密钥的,但是德国人的秘密情报格式在开头和结尾都写“希特勒万岁”,如此才让计算的时间大大缩短,进而被“破解”了。)
频度最高的前30个双字母: TH HE IN ER AN RE ED ON ES ST EN AT TO NT HA ND OU EA NG AS OR TI IS ET IT AR TE SE HI OF
频度最高的前20个三字母: THE ING AND HER ERE ENT THA NTH WAS ETH FOR DTH HAT SHE ION INT HIS STH ERS VER
the 的使用频率最高,是ing的三倍
一半的单词以es,dt结尾
一半的单词以ta,sw开头
y的使用频率90%都集中在单词的结尾
现在有一份密文:
假定我们已经知道明文是英文,加密方式是单表加密。
第一步:确定字母的出现次数
P和Z出现的次数最多,E在两者之间的可能性最大
OSU 在 II{r,n,i,o,a,s}
ABIJQTY 在IV V{w,v,b,k,x,q,j,z}
考察密文双字母组合ZW出现次数最多,很可能是TH
因此,猜测Z为T,W为H,P为E
考察三字母组合,ZWP->THE,ZWSZ->TH?T,S->A
再进一步分析基本上就是猜词了,最后得到的明文: