但无处可去https://www.openssl.org/docs/crypto/EVP_PKEY_keygen.html https://www.openssl.org/docs/crypto/EVP_PKEY_keygen.html它提到了随机数生成器的种子......
请参阅 OpenSSL 维基页面随机数 http://wiki.openssl.org/index.php/Random_Numbers。它会带你详细地了解它。
...使用 EVP 功能时没有提及播种
EVP 函数使用库中使用的任何生成器。它可能是md_rand
或 FIPS AES/CTR 生成器。为 EVP 函数获取随机数没有什么特别的(与其他函数相反)。
我可以假设播种是在更高级别的 EVP 职能内部为我完成的吗?
Yes, if您自己没有为生成器播种。如果您为生成器播种并且有足够的熵,那么它不会自动播种。
您应该避免让生成器自行自动播种。请参阅 OpenSSL 维基页面随机数 http://wiki.openssl.org/index.php/Random_Numbers了解详情。
使用 EVP 接口时,对生成器进行播种/自动播种没有什么特别的。无论你做什么都适用于一切。
如果我确实需要这样做,那么我必须查看哪些功能?
OpenSSL 维基页面随机数 http://wiki.openssl.org/index.php/Random_Numbers提供更多详细信息,但您应该执行以下操作:
int rc = RAND_load_file("/dev/urandom", 32);
if(rc != 32) {
/* RAND_load_file failed */
}
/* OK to proceed */
您想避免直接调用RAND_poll
,并且您想避免自动播种(这会调用RAND_poll
内部)。