RAND_bytes のドキュメントでは、生成されたランダム バイトが予測可能な場合、関数はエラーを返す可能性があると主張しています。私の質問は、そのようなエラーの頻度はどれくらいですか?
有限ループ (たとえば 5 回の試行) で RAND_bytes を呼び出してから例外をスローすることは、多かれ少なかれ次のように、この問題を回避する合理的なアプローチになります。
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");
}
または、このループはばかげているので、最初の試行後にスローする必要がありますか?
ありがとう。