2013-08-21 226 views
1

我正在使用openssl加密庫,我對所有這些加密的東西都很陌生,並且慢慢地我正在學習所有這些。我對隨機數發生器有疑問,我使用RAND_pseudo_bytes()來產生一個僞隨機數。我用我所需的熵爲它提供種子。但我的疑問是,如果我們提供兩次相同的種子,隨機數發生器會生成相同的隨機數嗎?隨機數生成器和種子

+0

您可能會在[crypto.stackexchange.com](http://crypto.stackexchange.com) – Joe

+1

中找到知道此問題答案的人。如果種子相同,則應該生成相同的序列。 – doptimusprime

+1

@Joe:這個問題對於crypto.SE來說並不是很合適,儘管在這裏被問到的方式讓人有點難以辨認:「加密PRNG如何工作?」對於crypto.SE來說是一個很好的問題(除了可能有點太寬泛); 「OpenSSL PRNG如何工作?」在主題上會略微有些變化,而「我如何使用OpenSSL PRNG?」將加密的主題。這裏問的這個問題看起來有點像第二種類型,但它背後的[真正的問題](http://crypto.stackexchange.com/q/9983)更接近最後一個。 –

回答

2

僞隨機數發生器是確定性的。但是,它們的構造方式很難生成循環(如果它達到之前的狀態,它將生成相同的隨機數,直到進入下一個循環,而沒有結束)。

如果你開始使用與它相同的種子的僞隨機數發生器產生相同的輸出。這是Ubuntu中的一個問題,靜態代碼分析的響應導致在播種過程中刪除任何隨機數。

請注意,大多數僞隨機數發生器混合在當前狀態的額外的種子/熵。所以一旦僞隨機數發生器播種良好,它將繼續產生隨機數。很多庫默認情況下都會通過一個好的熵源(例如/dev/random或Linux系統上的預先播種/dev/urandom)爲隨機數生成器播種。

當然,它不會受到傷害測試。

+0

我的回答有什麼問題,jithin? –