本文主要做了两件事,一是提出了一种使用C4.5算法生成的决策树来识别密文所使用的加密算法的方法,二是为这一算法设计了一个特征提取系统提取八个特征作为算法的输入,最终实现了70%~75的准确率。

准备工作

通过分析各式各样的密文,作者发现密文都是由乱码(符号)、字母(大小写)和数字组成的,然后利用这些信息的熵、最大熵等构建决策树。

整个过程分为训练阶段和测试阶段。训练阶段的目标是创建一个分类模型,包括特征提取和分类两个过程。测试阶段包括特征提取和识别两个过程,是利用训练阶段训练好的模型进行加密算法的鉴别。下图是整个过程的一个示意:

C4.5使用标准化信息增益作为准则来构建决策树。

训练阶段

本文使用了基于熵的特征提取方法,熵是信息无序程度的度量,可以使用

H(x) = -Σp_ilog_2p_i

进行计算。

在提取特征时,也用到了最大熵的概念,最大熵是指数据中所有元素出现概率相同时的熵值,即:

H(S) = q*q^{{-1}}log_2q=log_2q

熵和最大熵表示数据的随机性,可以被用作密文分类,相关系数可以用来发现字母之间的关系,由于最大熵在排列、替换密码的情况下可能会有所不同,所以密文长度也可以作为一个特征使用,综上所述,文章提出了可使用的八个特征:

  1. 所有字母的最大熵
  2. 大写字母的最大熵
  3. 小写字母的最大熵
  4. 符号的最大熵
  5. 数字的最大熵
  6. 所有字母的熵
  7. 大写字母的相关性
  8. 文件大小

后面就是常规的决策树算法的实现,不过要注意进行剪枝,否则很容易过拟合,后边有时间的话会详细的梳理一下决策树的几种实现以及剪枝是如何操作的

最新文章

  1. 虚拟机备份克隆导致SQL SERVER 出现IO错误案例
  2. Liferay 6.2 改造系列之一:源码编译和服务启动
  3. [ACM_动态规划] 轮廓线动态规划——铺放骨牌(状态压缩1)
  4. Qt 5.4 OpenCV 2.4.11 Win 32 Configuration
  5. [HDU 3535] AreYouBusy (动态规划 混合背包 值得做很多遍)
  6. 一个tomcat究竟能接受多少并发
  7. 初识sass框架
  8. Context Switch Definition
  9. debian小巧好看的桌面
  10. ecshop简单结构
  11. element.style覆盖了我的样式!!
  12. win10下端口被占用解决办法
  13. OpenStack Paste.ini详解(二)
  14. 关于H5的一些杂思细想(一)
  15. nginx 和 tp兼容pathinfo和rewrite两种url访问方式
  16. python3 正则匹配[^abc]和(?!abc)的区别(把多个字符作为一个整体匹配排除)
  17. PNG,GIF,JPG的区别及如何选
  18. caffe运行错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0) invalid device function
  19. PostgreSQL数据库单机扩展为流复制
  20. [Winfrom]Cefsharp配置与初始化

热门文章

  1. BZOJ 2219 数论之神 (CRT推论+BSGS+原根指标)
  2. ON_WM_MOUSEWHEEL无响应
  3. Android中关于回调概念的笔记
  4. R-ts()
  5. 初学 Nginx (一) SSI 的作用
  6. 两次取反 !!a 的作用
  7. Java多线程核心知识(跳槽面试必备)
  8. uni-app 尺寸单位
  9. TCP被动打开 之 第三次握手-接收ACK
  10. 域名与服务器 ip地址的理解