`crypto.randomInt()` 在密码学上是安全的吗?

Is `crypto.randomInt()` cryptographically secure?

我正在寻找一种在 Node.js 中生成安全随机数的好方法。我找到并正在使用的一个答案是 crypto.randomInt()。这种方法在密码学上是安全的吗?还有更好的选择吗?

The crypto module provides cryptographic functionality that includes a set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify functions.

所以是的,假设 OpenSSL 的随机数生成器是安全的,您会认为这是安全的。在 非常具体 的情况下,OS 没有提供足够的随机性,这可能意味着 OpenSSL 随机数生成器没有很好地播种。但是,在普通的 PC / 服务器上,您希望它是安全的。

一如既往,您无法使用确定性系统创建熵。因此,您应该始终确保为特定的运行时提供一个播种良好的系统随机数。对于 VM,这通常意味着安装客户端扩展,例如,以便可以访问主机随机池。