RAND_bytes 的文档声称,如果生成的随机字节是可预测的,则该函数可能会返回错误。我的问题是这样的错误有多频繁?
可以在有限循环中调用 RAND_bytes(比如 5 次尝试)然后抛出异常是解决这个问题的合理方法,或多或少像这样:
unsigned char random_bytes[4];
uint8_t attempts = 0;
while(RAND_bytes(random_bytes,sizeof(random_bytes)) != 1 && ++attempts != 5 ) { }
if( attempts == 5)
{
throw std::runtime_error("random bytes too predictable after multiple attempts");
}
还是这个循环很傻,我应该在第一次尝试后扔掉?
谢谢。