• ベストアンサー

phpのトークン生成について

phpで開発をしております。 openssl_random_pseudo_bytesという関数を使いたいです。 内部OSの乱数生成器?が使用されているようなのですが、以下のどちらが使われているのでしょうか? /dev/random /dev/urandom /dev/randomだった場合、エントロピー不足の際にアプリが止まってしまうという話を聞いたのですが、どれほどの確率で起こるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

下記URLでopenssl_random_pseudo_bytesのソースコードが確認できます。 https://github.com/php/php-src/blob/PHP-7.4.9/ext/openssl/openssl.c#L6931-L6965 コードやドキュメントを深追いすれば確証のある答えが得られる(OpenSSLのソースコードを読むことになります)と思いますが、#ifdef PHP_WIN32 のコメントに random/urandom equivalent on Windows とあることから、PHP_WIN32以外の環境では/dev/urandomを使用しているのではないかと推測されます。 参考までに、下記URLに示すOpenSSLのドキュメントでは/dev/urandomが/dev/randomよりも優先して利用されると書かれています。 https://github.com/openssl/openssl/blob/master/INSTALL.md#devrandom

madosel15
質問者

お礼

ありがとうございました。とても参考になりました!!!