![]() |
1
33
过程 通过它生成字符串。 N 可能的字符串,其中每个字符串的被选择概率与其他字符串相同,即。 . 在这种情况下,弦的熵为 N . 熵通常用位来表示,这是一个对数标度:一个 n 位”是一个熵等于 n
例如:我喜欢将密码生成为两个小写字母,然后是两个数字,然后是两个小写字母,最后是两个数字(例如。
|
![]() |
2
25
Shannon's entropy equation 是标准的计算方法。下面是一个简单的Python实现,无耻地从 Revelation
注意,这个实现假设您的输入位流最好用字节表示。你的问题域可能是这样,也可能不是这样。你真正想要的是把你的比特流转换成一串数字。你如何决定这些数字是特定领域的。如果你的数字真的只有1和0,那么把你的比特流转换成1和0的数组。但是,您选择的转换方法将影响您得到的结果。 |
![]() |
3
16
Kolmogorov Complexity 一根绳子。 这不仅不能用一大块伪代码来回答,而且Kolmogorov的复杂性也不是一个问题 computable function 在实践中,您可以做的一件事是用可用的最佳方法压缩位字符串 data compression 算法。 压缩越多,熵就越低。 |
|
4
8
没有单一的答案。熵总是相对于某个模型。当有人谈论一个熵有限的密码时,他们的意思是“相对于智能攻击者的预测能力”,而且它总是一个上限。
话虽如此,有一些相当通用的模式,你可以尝试;它们被称为压缩算法。如果gzip能够很好地压缩数据,那么至少有一个模型能够很好地预测数据。例如,gzip对简单的替换基本上是不敏感的。它可以处理文本中频繁出现的“wkh”和处理“the”一样容易。 |
![]() |
5
4
NIST随机数生成器评估工具包有一种计算“近似熵”的方法。以下是简短描述:
更详细的解释可以从 PDF http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html |
![]() |
6
1
下面是一个Python实现(我还将其添加到Wiki页面):
上面的例子与 the example given on Wikipedia . |
![]() |
7
1
用这个公式计算单词的香农熵: http://imgur.com/a/DpcIH 这里有一个O(n)算法来计算它:
|