我的问题是关于熵的,我阅读了 Niyaz 多次发布的描述。我可能还没有完全掌握这个概念,所以我会问我的问题。我有一个 .dll 文件,我对其进行了几次测试,其中一个结果是熵值为 6.46(未打包)。我很难弄清楚这到底是什么意思,我理解 Not Packed 部分,但我不理解 6.46 的值,因为我没有看到 Entropy 值的任何比例。我可能没有正确考虑这一点,我将非常感谢任何帮助。谢谢...
问问题
138 次
2 回答
3
熵的定义是:
在哪里:
a
表示文件中所有可能的字符,并且P(A)
- 此字符的概率(等于其出现次数除以文件大小)
对数的底定义了熵的单位。如果它等于 2,则熵以比特为单位。
熵是不确定性的度量。想象一个由相同字母组成的文件。那么 P(a) = 1(因为只有一个字符)并且熵等于:
0 位的熵意味着:没有不确定性,完全可预测。另一方面,想象一个每个字符都不同的文件。P 有 256 个值,每个等于 1/256。那么熵等于:
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 回答