[英]Openssl RAND_bytes algorithm
RAND_bytes
函數在OpenSSL中使用什么算法?
OpenSSL可以加載和運行不同的隨機數引擎,並不僅限於單個實現。 RAND_bytes
在crypto/rand/rand_lib.c
,它通過調用同一文件中的函數RAND_get_rand_method()
獲得指向具體RNG實現的函數指針。
因此,假設您尚未加載新的RNG引擎,OpenSSL將選擇以下其中一項:
默認情況下,它選擇RAND_SSLeay()
,在crypto/rand/md_rand.c
,最終調用ssleay_rand_bytes()
。 我認為它確實沒有名稱,隨機性最終來自消息摘要(MD_Update)。
如果在FIPS模式下運行1.0 FIPS模塊,則會獲得ANSI X9.31 RNG,其核心使用3DES或AES。 (請注意,FIPS 140-2中不再允許使用ANSI X9.31)。
如果您在FIPS模式下運行2.0 FIPS模塊,則會獲得SP 800-90A確定性隨機位生成器(DRBG)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.