本文主要做了两件事,一是提出了一种使用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. 文件大小

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

Identification of Encryption Algorithm Using Decision Tree的更多相关文章

  1. Decision Tree Algorithm

    Decision Tree算法的思路是,将原始问题不断递归地细分为子问题,直到子问题直接可获得答案为止.在模型训练的过程中,根据训练集去做树的生长(Grow the tree),生长所有可能的Bran ...

  2. Spark MLlib - Decision Tree源码分析

    http://spark.apache.org/docs/latest/mllib-decision-tree.html 以决策树作为开始,因为简单,而且也比较容易用到,当前的boosting或ran ...

  3. Sklearn库例子1:Sklearn库中AdaBoost和Decision Tree运行结果的比较

    DisCrete Versus Real AdaBoost 关于Discrete 和Real AdaBoost 可以参考博客:http://www.cnblogs.com/jcchen1987/p/4 ...

  4. OpenCV码源笔记——Decision Tree决策树

    来自OpenCV2.3.1 sample/c/mushroom.cpp 1.首先读入agaricus-lepiota.data的训练样本. 样本中第一项是e或p代表有毒或无毒的标志位:其他是特征,可以 ...

  5. (转)Decision Tree

    Decision Tree:Analysis 大家有没有玩过猜猜看(Twenty Questions)的游戏?我在心里想一件物体,你可以用一些问题来确定我心里想的这个物体:如是不是植物?是否会飞?能游 ...

  6. CART分类与回归树与GBDT(Gradient Boost Decision Tree)

    一.CART分类与回归树 资料转载: http://dataunion.org/5771.html        Classification And Regression Tree(CART)是决策 ...

  7. 机器学习技法:09 Decision Tree

    Roadmap Decision Tree Hypothesis Decision Tree Algorithm Decision Tree Heuristics in C&RT Decisi ...

  8. 机器学习技法笔记:09 Decision Tree

    Roadmap Decision Tree Hypothesis Decision Tree Algorithm Decision Tree Heuristics in C&RT Decisi ...

  9. [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)

    [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...

随机推荐

  1. vue项目中,点击按钮复制其内容

    <el-table-column label="推广链接" align="center"> <template slot-scope=&quo ...

  2. 【leetcode】1275. Find Winner on a Tic Tac Toe Game

    题目如下: Tic-tac-toe is played by two players A and B on a 3 x 3 grid. Here are the rules of Tic-Tac-To ...

  3. mybatis insert into 返回id

    <insert id="saveComplaint" useGeneratedKeys="true" parameterType="com.fo ...

  4. vue学习时遇到的问题(二)

    1. this.$nextTick veu中进行数据改变后,并不会马上刷新视图:用nextTick可告诉执行下个函数后马上刷新视图: this.$nextTick(function(){     // ...

  5. JVM(六),java内存模型

    六.java内存模型 1.线程独占部分 (1)程序计数器 (2)Java虚拟机栈 (3)本地方法栈 (4)递归为什么会引发java.lang.StackOverFlowError异常吗 2.线程共享部 ...

  6. 51 Nod 1116 K进制下的大数

    1116 K进制下的大数  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数 ...

  7. Android中定义广播监听,其他页面发送

    private LocalBroadcastManager broadcastManager; /** * 注册广播接收器 */ private void receiveAdDownload() { ...

  8. VS下创建网站发布到IIS

    http://www.51zxw.net/show.aspx?id=27297&cid=410

  9. mybatis延迟加载(Collection)

    上篇讲了assocation,同样我们也可以在一对多关系配置的结点中配置延迟加载策略. 结点中也有 select 属性,column 属性. 需求: 完成加载用户对象时,查询该用户所拥有的账户信息. ...

  10. log4net保留几天内的日志

    想实现保留7天(一周)内的日志,网上一堆下述代码 <appender name="RollingLogFileAppender" type="log4net.App ...