Random Openssl随机字节算法
在OpenSSL中,Random Openssl随机字节算法,random,openssl,Random,Openssl,在OpenSSL中,RAND_bytes函数使用什么算法?OpenSSL可以加载和运行不同的随机数引擎,并且不限于单个实现RAND_bytes在crypto/RAND/RAND_lib.c中实现,它通过调用同一文件中的函数RAND_get\u RAND_method()来获取指向具体RNG实现的函数指针 因此,假设您尚未加载新的RNG引擎,OpenSSL将选择以下选项之一: 默认情况下,它选择RAND\u-SSLeay(),在crypto/RAND/md\u-RAND.c中实现,最终调用SSLe
RAND_bytes
函数使用什么算法?OpenSSL可以加载和运行不同的随机数引擎,并且不限于单个实现RAND_bytes
在crypto/RAND/RAND_lib.c
中实现,它通过调用同一文件中的函数RAND_get\u RAND_method()
来获取指向具体RNG实现的函数指针
因此,假设您尚未加载新的RNG引擎,OpenSSL将选择以下选项之一:
RAND\u-SSLeay()
,在crypto/RAND/md\u-RAND.c
中实现,最终调用SSLeay\u-RAND\u-bytes()
。我不认为它真的有名字,随机性最终来自消息摘要(MD_Update)看看自己的源代码,不难找到。“…一个ANSI X9.31 RNG。随机性最终来自3DES。”-OpenSSL 1.0.x使用FIPS对象模块2.0,现在使用AES。但我在追踪AES128/AES/192/AES256(或默认使用的内容)时遇到问题。是的,感谢您指出它发生了变化。OpenSSL现在实现SP800-90。它定义了不同的密钥强度,因此您可以让它实际使用AES 128、256或512。我可能应该在这个答案中编辑一些信息。。。好的,这是{有趣的|尴尬的}(我的坏毛病是没有事先检查)。根据OpenSSL FIPS 2.0用户指南,“默认DRBG”,第64页:“一个称为“默认DRBG”的特殊DRBG实例用于将DRBG映射到RAND接口。”但它[仍然]不清楚SP800-90的四个生成器中使用了哪一个,也不清楚底层算法的安全级别。