OpenSSL/随机数
外观
< OpenSSL
OpenSSL 包含一个密码学安全的伪随机数生成器。与随机数生成器相关的函数以前缀RAND_开头。
OpenSSL 自动从/dev/urandom(在 UNIX 上)或CryptGenRandom(在 Windows 上)播种随机数生成器。因此,除非您在异国平台上,或者希望添加额外的熵,否则没有必要播种随机数生成器。
可以通过调用以下命令来检查随机数生成器是否已成功播种
int RAND_status (void);
如果 RNG 已播种,则返回 1,否则返回 0。
函数 RAND_poll() 可用于使用系统熵源(/dev/urandom
或 CryptGenRandom
)重新播种随机数生成器。RAND_poll() 在第一次使用随机数生成器时自动调用,因此不需要在初始化时调用它。(即使许多使用 OpenSSL 的示例都这样做。)但是,对于长时间运行的进程,可能希望偶尔调用 RAND_poll() 以使用新的熵重新播种随机数生成器。