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() 以使用新的熵重新播種隨機數生成器。