MATLAB 代码,用于使用马尔可夫链评估熵噪声源



我正在尝试将此PDF的第68页集成到MATLAB代码中:

http://csrc.nist.gov/publications/drafts/800-90/draft-sp800-90b.pdf#page=68

我在此处将这些说明作为图像包含:

由于我对马尔可夫链一无所知或知之甚少,我首先对表示 oi 是什么的说明感到困惑。"o i 表示状态i 在样本中出现的次数"。什么是状态 i

第 4 步可能是其中最困难的。我不知道如何计算 S 或类似的东西。

这是我的开始代码:

function minEntropy = markovTest(points, bitSize)
if bitSize > 6
    err('Maximum of 6 bits are allowed for Markov test, re-map inputs as in 7.2')
end
k = 128;
alpha = 0.05;
alpha = min(alpha^(bitSize^2),alpha^k);
% Estimate the initial state probability distribution:
e = sqrt(log(1./(1-alpha))./(2*N));
N = length(points);
oi == ?
Pi = min(1, oi./N + e);
??? Hat to do next?
end

NIST已经将所有这些测试集成到一个不错的Python库中,可以在GitHub上找到。如果由于某种原因库消失了,您可以尝试联系NIST的Tim Hall,他也已将此库移植到C代码中,如果这更适合您的话。tim.hall@NIST.gov

最新更新