簡體   English   中英

Openssl RAND_bytes算法

[英]Openssl RAND_bytes algorithm

RAND_bytes函數在OpenSSL中使用什么算法?

OpenSSL可以加載和運行不同的隨機數引擎,並不僅限於單個實現。 RAND_bytescrypto/rand/rand_lib.c ,它通過調用同一文件中的函數RAND_get_rand_method()獲得指向具體RNG實現的函數指針。

因此,假設您尚未加載新的RNG引擎,OpenSSL將選擇以下其中一項:

  1. 默認情況下,它選擇RAND_SSLeay() ,在crypto/rand/md_rand.c ,最終調用ssleay_rand_bytes() 我認為它確實沒有名稱,隨機性最終來自消息摘要(MD_Update)。

  2. 如果在FIPS模式下運行1.0 FIPS模塊,則會獲得ANSI X9.31 RNG,其核心使用3DES或AES。 (請注意,FIPS 140-2中不再允許使用ANSI X9.31)。

  3. 如果您在FIPS模式下運行2.0 FIPS模塊,則會獲得SP 800-90A確定性隨機位生成器(DRBG)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM