我使用openssl_random_pseudo_bytes
来加密安全随机性。这个函数使用/ dev / random /或/ dev / urandom吗?我读过前者比后者更安全但是如果没有足够的随机性可以“阻止”。
这种阻止只是延迟,如果是这样,它是否会导致性能问题?我阅读了博客文章 Better Random Numbers in PHP using /dev/urandom ,其中指出:
/ dev / urandom是类Unix操作系统上的特殊伪文件 生成“大多数随机”字节并且是非阻塞的。的/ dev /随机 (没有“u”)用于真正的加密应用程序,如密钥 一代又在阻挡。一旦你耗尽它的随机性供应 它会阻止,直到它从环境中提取新的随机性。 因此,您不希望在Web应用程序中使用/ dev / random。
这是真的吗? openssl_random_pseudo_bytes和/或/ dev / random是否会导致性能问题?
答案 0 :(得分:-1)
我从未使用/dev/random
。但我在Windows上使用Win32 Cryptography API生成随机数。我比较了OpenSSL和CAPI的性能,OpenSSL比Windows对应的速度更快。但我已经在C ++程序中进行了测试,而不是在PHP中进行测试。
所以,我认为OpenSSL如果不是更快,一定不能慢于/dev/random
。 OpenSSL使用系统调用进行种子设定,而不是用于生成。
它绝不能成为瓶颈。但是你应该在做出决定之前对结果进行分析。我在Windows上没有发现任何问题。