密码分析之单表代换原理详解与算法实现

【密码分析(单表代换)】
1. Equipment

(1) operating system version :WIN 10

(2) CPU instruction set: x 64

(3) software:MATLAB R2020a

2.process
  • Problem background analysis

密码分析(单表代换):
密文1:
UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZVUEPHZHMDZSHZQWSFPAPPDTSVPQUZWYMXUZUHSXEPYEPOPPZSZUFPOMBZWPFUPZHMDJUDTMOHMQ
密文2:
JXQCEFMPJASOQMDPQABCSTYSMGRQBTQOASKOAOUWCPQBDPMEEASIVMWPOQVJXQVQCSORWBQKMMYVIQAOXQPVASBFPAOJCOARQHFQPCQSOQASBQAOXXAVCJVMGSABZASJATQVJXQYSMGRQBTQGQTACSDPMEKMMYVASBDMPEARQBWOAJCMSQSAKRQVWVJIMRQAPSAKMWJIXCSTVXAJGQXAZQSMMFFMPJWSCJIMQHFQPCQSOQCSBACRIRCDQG0OASVJWBIARRJXQFRAOQVCSIXQGMPRBASBRQAPSDPMEFQMFRQGQGCRRSQZQPEQQJCSMWRCDQJCEQLWVJKIPQABCSTJXQCPKMMYVGQOASARVMBQZQRMFMWPASARICOARVYCRRVASBRQAPSXMGJMZCQGASBCSJQPFPQJIXQGMPRBAPMWSBWVCSBCDDQPQSJGAIVGQOASRQAPSIXQFAVJKIPQABCSTKMMYVCSJXCVGAIGQGMSJPQFQAJIXQECVJAYQVMMIXQPVASBOASKWCRBMSJXQCPAOXCQZQEQSJV

​ 通过题意可知,此题需要采用单表代换的方法进行密码分析,单表代换密码的密码算法加解密时使用一个固定的替换表。单表代换密码又可分为一般单表替代密码、移位密码、仿射密码等等,此处的替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文,替代密码的密钥就是其替换表。

​ 字母出现的频率会反映出相应语言的统计特性。大量的统计定会发现,相应语言中每个字母在相应语言中出现的概率。于是便得到该语言字母表上的一个概率分布。 例如Beker在1982年统计的样本总数为100 362,得到单码的概率分布见下表:

image-20211219085614018

  • Solution

先分析密文1,此处采用matlab中的tabulate函数来创建向量ciphertext的信息数据频率表,其代码如下:


code:

ciphertext=['UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZVUEPHZHMDZSHZQWSFPAPPDTSVPQUZWYMXUZUHSXEPYEPOPPZSZUFPOMBZWPFUPZHMDJUDTMOHMQ']';
tabulate(ciphertext)

统计密文中字母出现的频率如下:

ValueCountPercent
U108.33%
Z1411.67%
Q43.33%
S108.33%
O86.67%
V54.17%
H75.83%
X54.17%
M86.67%
P1714.17%
G21.67%
E65.00%
W43.33%
F43.33%
D54.17%
B21.67%
T32.50%
A21.67%
I10.83%
Y21.67%
J10.83%

为了方便直观对比,我将它制作成柱状图的形式:

image-20211219095215488

经过与单码的概率分布表的比对可以得知,其明文为:

​ it was disclosed yesterday that several informal but direct contacts have been made with political representatives of the viet cong in moscow

同理,密文2也按照同样的思路分析:


code:

ciphertext=['JXQCEFMPJASOQMDPQABCSTYSMGRQBTQOASKQAOUWCPQBDPMEEASIVMWPOQVJXQVQCSORWBQKMMYVJQAOXQPVASBFPAOJCOARQHFQPCQSOQASBQAOXXAVCJVMGSABZASJATQVJXQYSMGRQBTQGQTACSDPMEKMMYVASBDMPEARQBWOAJCMSQSAKRQVWVJMRQAPSAKMWJJXCSTVXAJGQXAZQSMMFFMPJWSCJIJMQHFQPCQSOQCSBACRIRCDQGOOASVJWBIARRJXQFRAOQVCSJXQGMPRBASBRQAPSDPMEFQMFRQGQGCRRSQZQPEQQJCSMWRCDQJCEQLWVJKIPQABCSTJXQCPKMMYVGQOASARVMBQZQRMFMWPASARIJCOARVYCRRVASBRQAPSXMGJMZCQGASBCSJQPFPQJJXQGMPRBAPMWSBWVCSBCDDQPQSJGAIVGQOASRQAPSJXQFAVJKIPQABCSTKMMYVCSJXCVGAIGQGMSJPQFQAJJXQECVJAYQVMMJXQPVASBOASKWCRBMSJXQCPAOXCQZQEQSJV']';
tabulate(ciphertext)

统计密文中字母出现的频率如下:

ValueCountPercent
J397.17%
X203.68%
Q7313.42%
C356.43%
E101.84%
F132.39%
M397.17%
P315.70%
A519.38%
S478.64%
O203.68%
D91.65%
B244.41%
T81.47%
Y81.47%
G183.31%
R285.15%
K101.84%
U10.18%
W142.57%
I91.65%
V285.15%
H20.37%
Z61.10%
L10.18%

其柱状图如下:

image-20211219095508770

经过与单码的概率分布表的比对可以得知,其明文为:

​ The importance of reading knowledge can be acquired from many sources,these include books,teachers and practical experience and each has its own advantages.The knowledge we gain from books and formal education enables us to learn about things that we have no opportunity to experience in daily life.We can study all the places in the world and learn from people we will never meet in our life time,just by reading their books, we can also develop our analytical skill sand learn how to view and interpret the world around us in different ways,we can learn the past by reading books in this way we wont repeat them is takes of other sand can build on their achievements.

3. summary and harvest

​ 最初采用C++写的字频分析的函数,采用按位读取相应的字符,并记录到相应的tag值上,最后再用for循环进行输出,由于过程过于冗杂,统计显示的效果不是很理想。通过查找matlab的官方文档,我了解到matlab中的tabulate函数可以进行字频统计的操作,于是改用matlab完成。

​ 从实践的角度上第一次对频率分析这个破解经典密码的方法有了初步的理解。因为在自然语言里,字母表里的有些字母比其它的字母出现得更频繁。频率分析法假设密码没有隐藏这样的统计信息。例如,在简单的替换密码中,每个字母只是简单地被替换成另一个字母,那么在密文中出现频率最高的字母就最有可能是E,再按照对应的频率统计即可完成密文的破译。

初学信息安全,可能存在错误之处,还请各位不吝赐教。

受于文本原因,本文相关算法实现工程无法展示出来,现已将资源上传,可自行点击下方链接下载。

密码分析之单表代换原理详解与算法实现工程文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timerring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值