2013-07-22 64 views
1

我正在做一些密碼學實驗,現在我正在嘗試做一個確定性的隨機數發生器(DRBG)。它應該是一個基於計數器模式的確定性隨機位發生器,使用在 NIST SP 800-90中指定的AES-128分組密碼。我有openSSL的源代碼。在openssl中,有兩個函數Rand_bytes()RAND_pseudo_bytes()用作隨機數生成器。如何製作確定性的隨機數發生器?

如何使用AES-128分組密碼將此openssl隨機數發生器配置爲基於計數器模式的DRBG?

+0

如果這是戲,製作DRBG並不困難(即使是符合NIST的)。如果你想更高效地工作,那麼你可以借用其中的一個[DRBG](http://github.com/TomMD/DRBG)實現。如果這是爲了生產,那麼問問自己,爲什麼你要關心RNG是否是確定性的? –

+0

它必須是確定性的,而且是爲了生產性目的 – jithin

+0

它是否是開源(GPL)?你需要回溯抵抗嗎?你需要任何程度的預測阻力? –

回答

0

你應該能夠指定一個隨機種子:

http://www.openssl.org/docs/crypto/RAND_add.html#

看來,你還可以保存並重新加載生成的序列:

http://www.openssl.org/docs/crypto/rand.html

+0

你能告訴我哪一個是數字生成所需的默認算法。我想要aes-128塊加密,如何配置? – jithin

+0

@jithin我沒有直接與該圖書館的經驗,對不起。我試圖回答的是如何使它成爲確定性**。也許你應該問另一個問題。 – Antonio

+2

這不起作用。 OpenSSL以額外的隨機狀態混合,所以序列不會基於種子重複。 – jww