
第一步IC是什么IC Index of Coincidence 重合指数用一句话说IC衡量的是这段文字里字母分布有多不均匀。第二步为什么字母分布不均匀很重要英语里字母出现的频率极不均匀字母出现频率e12.7% — 最常见t9.1%a8.2%z0.1% — 最少见如果把一段英文的字母频率画成柱状图会有很多高低起伏像山峰一样。但如果字母被完全随机打乱每个字母出现概率都是 1/26 ≈ 3.8%柱状图就是完全平的。IC就是测量这个起伏程度的数字。第三步IC怎么计算公式IC∑fi(fi−1)n(n−1)IC \frac{\sum f_i(f_i - 1)}{n(n-1)}ICn(n−1)∑fi(fi−1)其中fif_ifi 字母 i 出现的次数nnn 总字母数求和对26个字母都做一遍第四步用一个小例子算IC假设有10个字母的密文aaabbbcdef字母出现次数fif_ififi(fi−1)f_i(f_i-1)fi(fi−1)a33×2 6b33×2 6c11×0 0d10e10f10其他00∑fi(fi−1)6612\sum f_i(f_i-1) 6 6 12∑fi(fi−1)6612n(n−1)10×990n(n-1) 10 \times 9 90n(n−1)10×990IC12/900.133IC 12 / 90 0.133IC12/900.133第五步IC的标准值是多少情况IC值原因英语明文≈ 0.065字母分布极不均匀e/t/a频繁出现完全随机≈ 0.038每个字母都约等于1/26非常均匀凯撒/替换/转置≈ 0.065只改变字母的名字不改变分布形状Vigenère/Hill/OTP≈ 0.038–0.045多种密钥混合使用把分布打平了第六步为什么不同密码的IC不一样凯撒密码密码2→ IC高凯撒只是把所有字母统一平移比如每个字母3e(最常见) → ht(次常见) → w频率最高的还是同一批字母只是换了名字。IC不变还是0.065。简单替换密码3→ IC高每个字母换成另一个字母但不同字母换不同分布形状完全保留。IC不变还是0.065。转置密码4→ IC高字母位置打乱但每个字母的总数量完全没变。IC不变还是0.065。Vigenère密码5→ IC低用不同的偏移量轮流加密比如密钥KEY偏移10,4,24第1个字母用偏移10加密第2个字母用偏移4加密第3个字母用偏移24加密第4个字母又回到偏移10…原来’e’最多现在被分散加密成好几个不同字母字母分布被打平了IC降低到约0.04-0.05。OTP-ish密码7→ IC极低密钥和明文一样长每个字母用完全不同的偏移加密彻底打乱IC接近随机值0.038。第七步你的05号文件夹实际数据文件IC值判断E0.0663高→Null/Caesar/替换/转置G0.0616高→Null/Caesar/替换/转置B0.0630高→Caesar解密验证确认H0.0654高→CaesarA0.0653高→简单替换J0.0644高→简单替换M0.0672高→转置P0.0652高→转置D0.0423低→Vigenère/Hill/OTPQ0.0420低→Vigenère/Hill/OTPK0.0399低→Hill再用bigram确认L0.0399低→HillI0.0393极低→OTP-ishO0.0379极低→OTP-ish一句话总结IC高≈0.065说明字母分布起伏大和英语一样 → 密码只是改变了字母的名字或位置Caesar/替换/转置/NullIC低≈0.038说明字母分布很平被打平了 → 密码用了多种偏移混合加密Vigenère/Hill/OTPIC本质上就是一把尺子量的是字母分布的不均匀程度。