减少或清空熵池?

减少或清空熵池?

我经常使用虚拟机,它们似乎通常熵较低(没有鼠标或其他产生熵的输入)。我的软件出现了一个错误,我思考这是因为熵耗尽了。我想测试一下,但这种情况只是偶尔发生,而且很难重现。

如何清空熵池来测试我的软件在耗尽时的行为?

(注意:我正在调用其他人使用的代码dev/random,因此使用dev/urandom来防止阻塞不是一个选择。)

答案1

首先,您应该确保确实是随机池的耗尽导致了软件中的错误。您可以运行cat /proc/sys/kernel/random/entropy_avail来测试系统上的可用熵并检查它是否为零。

其次,据我所知(我还没有测试这些命令),您可以通过在 /proc 中设置适当的变量来减少熵池。要将其设置为 32 位:

echo 32 > /proc/sys/kernel/random/poolsize

或者

sysctl -w kernel.random.poolsize=32

答案2

cat /dev/random当熵变得可用时,它将不断消耗熵,使其保持在零或接近于零。它并不完美,但很简单。

相关内容