- ベストアンサー
phpのトークン生成について
phpで開発をしております。 openssl_random_pseudo_bytesという関数を使いたいです。 内部OSの乱数生成器?が使用されているようなのですが、以下のどちらが使われているのでしょうか? /dev/random /dev/urandom /dev/randomだった場合、エントロピー不足の際にアプリが止まってしまうという話を聞いたのですが、どれほどの確率で起こるのでしょうか?
- みんなの回答 (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
お礼
ありがとうございました。とても参考になりました!!!