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

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,得到单码的概率分布见下表:

  • Solution

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


code:

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

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

Value Count Percent
U 10 8.33%
Z 14 11.67%
Q 4 3.33%
S 10 8.33%
O 8 6.67%
V 5 4.17%
H 7 5.83%
X 5 4.17%
M 8 6.67%
P 17 14.17%
G 2 1.67%
E 6 5.00%
W 4 3.33%
F 4 3.33%
D 5 4.17%
B 2 1.67%
T 3 2.50%
A 2 1.67%
I 1 0.83%
Y 2 1.67%
J 1 0.83%

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

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

​ 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)

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

Value Count Percent
J 39 7.17%
X 20 3.68%
Q 73 13.42%
C 35 6.43%
E 10 1.84%
F 13 2.39%
M 39 7.17%
P 31 5.70%
A 51 9.38%
S 47 8.64%
O 20 3.68%
D 9 1.65%
B 24 4.41%
T 8 1.47%
Y 8 1.47%
G 18 3.31%
R 28 5.15%
K 10 1.84%
U 1 0.18%
W 14 2.57%
I 9 1.65%
V 28 5.15%
H 2 0.37%
Z 6 1.10%
L 1 0.18%

其柱状图如下:

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

​ 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,再按照对应的频率统计即可完成密文的破译。

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

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

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

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

  1. 扩展Euclidean算法求乘法逆原理详解与算法实现

    [利用扩展Euclidean算法求乘法逆] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 6 ...

  2. Hector SLAM 原理详解、算法解析

    目录 1.原理详解 2.算法解析 1.原理详解 Hector整体算法很直接,就是将激光点与已有的地图"对齐",即扫描匹配.扫描匹配就是使用当前帧与已经有的地图数据构建误差函数,使用 ...

  3. mysql单个查询_MySQL单表查询实例详解

    1.准备数据 以下操作将在该表中进行 create table student ( id int unsigned primary key auto_increment, name char(12) ...

  4. 多目标遗传算法NSGA-II原理详解及算法实现

    在接触学习多目标优化的问题上,经常会被提及到多目标遗传算法NSGA-II,网上也看到了很多人对该算法的总结,但真正讲解明白的以及配套用算法实现的文章很少,这里也对该算法进行一次详解与总结.会有侧重点的 ...

  5. RSA密码原理详解及算法实现(六步即可掌握)

    一.RSA算法概述 rsa算法是一种非对称加密算法,其安全性是建立在大素数难以分解的基础上的,即将两个大素数相乘十分容易,但想对其乘积进行分解却很困难,所以可以将其乘积公开作为加密密钥 二.RSA算法 ...

  6. 强化学习之原理详解、算法流程及Python代码

    开头先附上强化学习(reinforcement learning)的学习视频:https://morvanzhou.github.io/tutorials/machine-learning/reinf ...

  7. 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解

    相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...

  8. 决策树算法和CART决策树算法详细介绍及其原理详解

    相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...

  9. K近邻算法和KD树详细介绍及其原理详解

    相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...

  10. layui单选框verify_layui lay-verify form表单自定义验证规则详解

    虽然layui的官方文档已经是写的比较详细,但是初次使用的时候总会懵一下,这里纪录一下lay-verify自定义验证规则的时候到底放哪. html: 提交 js: form.verify({ //数组 ...

最新文章

  1. 微软:超过96%的企业用户正在测试Win10
  2. 建立空间参考 ISpatialReference
  3. go语言io reader_Go语言中的io.Reader和io.Writer以及它们的实现
  4. 神结合!一招玩转K8s和微服务治理
  5. 【c语言数据结构笔记】1.2 数据结构
  6. 用python做采集时相对路径转换成绝对路径
  7. python爬虫框架源码_python爬虫的基本框架
  8. node vue 合并项目_吐血整理最佳实践:SpringBoot整合Vue前后端分离开发
  9. 基本排序方法实现:选择排序、插入排序、希尔排序
  10. collectionutils包_CollectionUtils工具类的常用方法
  11. ant centos环境下 编译没有将配置文件加载_Linux 下的动态库、静态库与环境变量...
  12. 凯立德地图导航2020年最新版车载_高精度地图会把自动驾驶带跑偏吗?
  13. html5 web报表工具,Web报表工具的填报功能
  14. 平板电脑可以装python吗_电脑上的应用程序可以装在平板电脑上吗
  15. Discuz X 3.4 系列漏洞梳理
  16. 传统模式下安装linux,在将引导顺序更改为传统模式或在传统模式下安装操作系统时找不到引导设备...
  17. 内网即时通讯软件优点大全分享
  18. 使用Matplotlib绘制3D图形
  19. Skiplist跳表详解及其模拟实现
  20. win7没有计算机,Win7计算机上没有声音的解决方案

热门文章

  1. New Year Garland
  2. 机器人感知与规划笔记 (2) - 传感器(Sensor)类型及其限制
  3. 使用Python自动化管理Exchange邮箱
  4. SEO入门知识3:不能传递权重的链接
  5. 微信上传图片没反应_365微信编辑器图片上传不了怎么办?
  6. Emscripten 单词_背单词分享 | 我觉得实用的背单词方法
  7. 老湿人----山河拱手,为君一笑
  8. 消息轨迹、ACL 与多副本搭建
  9. mysql explain ref const_MYSQL explain详解
  10. python编辑器——wingIDE的使用详解