跳轉到內容

OpenSSL/隨機數

來自華夏公益教科書

OpenSSL 包含一個密碼學安全的偽隨機數生成器。與隨機數生成器相關的函式以字首RAND_開頭。

OpenSSL 自動從/dev/urandom(在 UNIX 上)或CryptGenRandom(在 Windows 上)播種隨機數生成器。因此,除非您在異國平臺上,或者希望新增額外的熵,否則沒有必要播種隨機數生成器。

可以透過呼叫以下命令來檢查隨機數生成器是否已成功播種

int RAND_status (void);

如果 RNG 已播種,則返回 1,否則返回 0。

函式 RAND_poll() 可用於使用系統熵源(/dev/urandomCryptGenRandom)重新播種隨機數生成器。RAND_poll() 在第一次使用隨機數生成器時自動呼叫,因此不需要在初始化時呼叫它。(即使許多使用 OpenSSL 的示例都這樣做。)但是,對於長時間執行的程序,可能希望偶爾呼叫 RAND_poll() 以使用新的熵重新播種隨機數生成器。

華夏公益教科書