0

我的问题是关于熵的,我阅读了 Niyaz 多次发布的描述。我可能还没有完全掌握这个概念,所以我会问我的问题。我有一个 .dll 文件,我对其进行了几次测试,其中一个结果是熵值为 6.46(未打包)。我很难弄清楚这到底是什么意思,我理解 Not Packed 部分,但我不理解 6.46 的值,因为我没有看到 Entropy 值的任何比例。我可能没有正确考虑这一点,我将非常感谢任何帮助。谢谢...

4

2 回答 2

3

熵的定义是:

熵

在哪里:

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

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

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

熵等于 0

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

熵等于 8

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

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

于 2013-05-07T04:30:31.727 回答
3

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

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

于 2013-05-07T03:48:45.607 回答