.dll文件中的熵值为6.46

时间:2013-05-07 03:46:54

标签: c++

我的问题是关于熵,我读了Niyaz多次发布的描述。我可能仍然没有完全理解这个概念所以我会问我的问题。我有一个.dll文件,我运行了几个测试,其中一个结果是熵值为6.46(未打包)。我很难弄明白这意味着什么,我理解Not Packed部分,但6.46的值我没有,因为我没有看到任何熵值的比例。我可能没有正确地思考这个问题,我非常感谢任何帮助。感谢...

2 个答案:

答案 0 :(得分:3)

在这种情况下,熵可能是以每字节数据的熵比特来衡量的。 8是完全随机的,0是完全可预测的。

实际上,这意味着您的DLL文件可能会被压缩到其初始大小的大约80%(6.46 / 8)。

答案 1 :(得分:3)

熵的定义是:

Entropy

其中:

  • a表示文件中的每个可能字符
  • P(A) - 此字符的概率(等于其出现次数除以文件大小)

对数的基数定义了熵的单位。如果它等于2,则以比特为单位测量熵。

熵是衡量不确定性的标准。想象一下由相同字母组成的文件。然后P(a)= 1(因为只有一个字符)并且熵等于:

Entropy equal to 0

0位的熵意味着:没有不确定性,完全可预测性。另一方面,想象一个每个字符不同的文件。有256个P值,每个值等于1/256。然后熵等于:

Entropy equal to 8

8位熵意味着:完全不确定,没有可预测性。

熵与基于熵的算法的压缩比相关。正如duskwuff所说,6.46位的熵意味着该文件可以通过基于熵的算法压缩到大约原始大小的4/5。