我经常使用虚拟机,它们似乎通常熵较低(没有鼠标或其他产生熵的输入)。我的软件出现了一个错误,我思考这是因为熵耗尽了。我想测试一下,但这种情况只是偶尔发生,而且很难重现。
如何清空熵池来测试我的软件在耗尽时的行为?
(注意:我正在调用其他人使用的代码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
当熵变得可用时,它将不断消耗熵,使其保持在零或接近于零。它并不完美,但很简单。