我应该如何安全地检查在 /dev/random 上执行 dd 是否会被阻止?

我应该如何安全地检查在 /dev/random 上执行 dd 是否会被阻止?

我正在开发一个仅按以下方式使用 /dev/random 的 shell 脚本:

dd if=/dev/random of=%{outputFile} count=512 bs=1 2>/dev/null

我明确不想使用 /dev/urandom,尽管由于各种原因最好使用 /dev/urandom,因为我想测试我为我的计算机购买的特定硬件随机数生成器并希望依赖它/dev/random 完全。

现在,我知道我可以检查 entropy_avail 和 poolsize,但是,我到底应该如何尽最大努力确保执行 dd 调用不会阻塞?出于某种原因,我觉得做一个简单的 if 检查 entropy_avail 的大小还不够,因为 entropy_avail 不一定告诉我到底有多少位可供 /dev/random 使用。

我应该如何安全地检查在 /dev/random 上执行 dd 是否会被阻止?

答案1

如果使用 GNU dd,您可以使用

dd if=/dev/random iflag=nonblock

它可以无阻塞地读取最多 512 个字节(因此,如果可用字节较少,则返回较少的字节)。

相关内容