openssl_random_pseudo_bytes和/或/dev/random会导致性能问题吗?


Can openssl_random_pseudo_bytes and/or /dev/random ever lead to performance issues?

我使用openssl_random_pseudo_bytes进行加密安全的随机性。此函数使用/dev/random/还是/dev/urandom?我读过前者比后者更安全,但如果没有足够的随机性,可以"阻止"。

这种阻塞是否只是延迟,如果是这样,它会导致性能问题吗?我阅读了博客文章 PHP 中使用/dev/urandom 的更好的随机数,其中指出:

/

dev/urandom 是类 Unix 操作系统上的特殊伪文件。 生成"大部分随机"字节并且是非阻塞的。/dev/random (不带"u")适用于真正的加密应用程序,例如密钥 生成并正在阻塞。一旦你用尽了它的随机性供应 它会阻止,直到从环境中提炼出新的随机性。 因此,您不希望在 Web 应用程序中使用/dev/random。

这是真的吗?openssl_random_pseudo_bytes和/或/dev/random会导致性能问题吗?

我从未使用过/dev/random.但是我已经在Windows上使用Win32 Cryptography API来生成随机数。我比较了OpenSSL和CAPI的性能,OpenSSL比Windows版本更快。但是我已经在C++程序中进行了测试,而不是在PHP中。

所以,我认为OpenSSL一定不会比/dev/random慢,如果不是更快的话。OpenSSL使用系统调用进行种子设定,而不是生成。

它绝不能变成瓶颈。但是,您应该在任何决定之前分析结果。我在Windows上没有发现任何问题。