以这种方式在OpenSSL中生成随机数有什么问题

时间:2015-08-11 20:19:18

标签: openssl random

我的以下方法应该使用OpenSSL生成随机数。这是正确和充分的吗?或者你看到它有任何问题吗?

vector<unsigned char> generateBytes(const unsigned char* seed, const size_t length)
{
     if (seed != nullptr)
          RAND_seed(seed, length);  // No error handling is necessary here??
     else 
         /*Do I need to do something here to correctly autoseed the PRNG */

     vector<unsigned char> result(length);   

     if (!RAND_bytes(result.data(), length)) {
            throw Exception("Could not get random bytes.");
     }
     return result;
}

我对标准做法也有以下疑虑:

  • 即使使用默认的SSLeay引擎,通常也会使用Engine API吗?

  • 通常的做法是从/ dev / random这样的熵池中自动播种PRNG,而不管OpenSSL在初始化时如何自动播种?

  • 将ENTROPY_NEEDED设置为某个值是否常见?

0 个答案:

没有答案