• ベストアンサー

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

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

  • PHP
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • 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
質問者

お礼

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

関連するQ&A

  • Mathematicaによる乱数生成について

    Mathematicaを用いて正規分布に係数をかけた物に従った乱数を生成したいのですが、ヘルプを調べても分からず困っています。 具体的に行いたいことは、 RandomReal[1/3*NormalDistribution[0,10], 100]          ~~~ のような事です。 正規分布の確率密度関数(平均0,分散10)に係数(ここでは1/3)をかけた分布に従う乱数を100個生成したいということです。 どなたか解決方法をご存知の方がいらっしゃいましたらよろしくお願いいたします。

  • 乱数の生成について

    下記のスクリプトではボタンをクリックして乱数を生成しています。 ボタンをクリックする事無く、windowが開くと同時に乱数を生成するにはどのようにすれば良いでしょうか? <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function gen_random(num1, num2) { retval=Math.random(); document.myform.ans.value = (Math.floor(retval * (num2 - num1)) + eval(num1)); } //--> </SCRIPT> </HEAD> <BODY> <center> <form name=myform> 乱数の範囲 <input type=hidden name=d1 value=1000> <input type=hidden name=d2 value=9999> <input type=button name=btn1 value=乱数発生 onClick=gen_random(myform.d1.value,myform.d2.value)><br> 乱 数:<input type=text name=ans size=4> </form> </center> </BODY> </HTML>

  • 乱数の生成について

    Javaの本を購入し、演習を行いましたが思った以上に理解できませんでした。 例題と演習を記入いたしますので、どなたかご教示くだされば幸いです。 ちなみにですが、本は初心者向けで例題のみで解けるものと思われます。 【例題1】0~9の数値を乱数で生成して表示 import java.util.Random; public class Lesson2to14 { public static void main(String[] args) { Random rand = new Random(); int lucky = rand.nextInt(10); System.out.println("今日のラッキーナンバーは" + lucky + "です。"); } } 【演習1】一桁の正の整数値、一桁の負の整数値、二桁の正の整数値をランダムで生成せよ import java.util.Random; public class Exercise2to7 { public static void main(String[] args) { Random rend = new Random(); int lucky = rend.nextInt(10); System.out.println("一桁の正の整数値を表示します:" + (lucky + 1)); Random rend2 = new Random(); int lucky2 = rend2.nextInt(9); System.out.println("一桁の負の整数値を表示します:" + -lucky2); Random rend3 = new Random(); int lucky3 = rend3.nextInt(90); System.out.println("二桁の正の整数値をランダムに生成します:" + (lucky3 + 10)); } } 演習1に関しては例題からなんとなく理解をしてプログラムを組むことができました。(当たってるかは不明です...) しかし演習2と3については例題1では組めるのか理解できません。 【演習2】キーボードから読み込んだ読み込んだ整数値±5の範囲の整数値をランダムに生成して表示するプログラムを作成せよ。 0~5であればrend.nextInt(6)で簡単にランダム生成できますが、 -5~5の範囲となると例題だけでは何も思いつきませんでした。 【演習3】 -1.0以上1.0未満の実数値をランダムに生成して表示せよ。 上記の場合はnextFloatから生成された数値から-1引けばできると思います。 しかし、例えば-2.0以上10以下など正負の値をランダムで生成する方法が解っていません。 こちらも良かったらご教示お願い致します。

    • ベストアンサー
    • Java
  • random()関数について

    random()関数で、擬似乱数を1000個発生させる intx; x=random()% 10000; /*0-9999の擬似乱数1個をxに代入*/ これの比較回数を求めたいのですが↑のx=random()%の%の意味とその後の10000という数字の意味がわかりません;; ↑の文を解りやすく説明していただけるとありがたいのですが^^;

  • c言語 random

    c言語でrandom関数を使って乱数を生成してください

  • PHPを使ってXML署名を作成しようとしています。

    PHPを使ってXML署名を作成しようとしています。 いつもお世話になっております。 今回PHPを使用してXML署名のXMLファイルを作成したいと考えています。 そこで、IEにインポートした証明書の情報をPHPで取得することは可能でしょうか。 関連するモジュール、関数なんでも結構です。 現時点ではサーバ上に電子証明書のファイル(.p12)をアップロードしOpenSSLのopenssl_pkcs12_read関数を使用して情報を取得できることはわかりました。 できればIEにインポートしている証明書の中からデータを取得したいと考えています。 当方の環境は以下です。 PHP Version 5.2.6 OpenSSL 0.9.8g 19 Oct 2007 PHPの開発について初心者ですが、なにとぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 【PHP】フレームワーク タグ生成関数の使い所

    PHPフレームワーク codeigniter を使用して 開発を行っています。 codeigniterには、 form_hidden() br() heading() 等の、タグを生成してくれる関数がたくさんあるのですが、 パラメーターを引数に入れなければならなかったり 出力結果が、br(2) → <br /> <br /> と 直接タグを打つのとそこまで手間があまり変わりません。 むしろ Dreamweaver上でプレビュー確認できなかったり ソースの色分けが上手く適応されなかったりの不便さを多く感じます。 このタグを生成してくれる系の関数は どこで使うものなのでしょうか? 動的に br の数が変わるとかそういう系の時に使う感じでしょうか? また、使うとしたら VIEWに書くものなのでしょうか?

    • ベストアンサー
    • PHP
  • fortran77で乱数を発生させたい

    fortran77で乱数を発生させたい こんばんわ。fortran77で乱数を発生させるにはどうすればいいのでしょうか? 調べてみるとfortran90ならば乱数の組み込み関数が用意されているようなのですが、fortran70にはないそうです。   real function random(i)    i=843314861*i+453816693    random=real(i)/2**31   end function   do 10 k=1,n    ransu(k)=random(i) 10 continue これを用いることで乱数が発生できると書いてあったのですが、オーバーフローしてしまったせいか、値がマイナスのものが出てきてしまい、うまくできませんでした。 これ以外にも方法はないでしょうか? 私の環境はsalford FTN77です。 回答よろしくお願いします。

  • パスカル言語を用いた乱数利用について

    パスカル言語を用いた乱数発生についての質問です。 パスカル言語を用いて0~100までの整数をランダムで10個出したいので、次のようにプログラムを組んだのですが、 欲しい乱数が出てきません。どこが間違えているか指摘していただけないでしょうか。よろしくお願いします。 var x : integer; p : real; {本当はintegerなのだろうが、使うよう指示されたrandom関数を使うとなるとrealしか受け付けなかった。} begin i := 0; x := seed(wallclock); while i <> 10 do begin i := i + 1; p := random(100); writeln('random(100)=',p) end end. ちなみに、これを出力した時の例はこのような感じです。 random(100)=6.8e-01 random(100)=6.4e-02 random(100)=9.3e-01 random(100)=1.3e-01 random(100)=7.2e-01 random(100)=8.8e-01 random(100)=9.1e-02 random(100)=9.5e-01 random(100)=3.6e-01 random(100)=7.9e-01 (※6.8e-01とは6.8*10^(-1)をのことです)

  • PHP開発「バナーをランダムに表示させる」

    PHP開発「バナーをランダムに表示させる」 (1)random.php <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>バナーをランダムに表示</title> </head> <body> <?php require_once("follow.php") ?> </body> </html> (2)random.ini [info] count=4 width=221 height=46 [data] url1=http://px.xframework.net/ image1=banner01.jpg alt1=セミナー情報 weight1=50 url2=http://px.xframework.net/ image2=banner02.jpg alt2=セミナー情報-禁止 weight2=20 url3=http://px.xframework.net/ image3=banner03.jpg alt3=開発事例 weight3=15 url4=http://px.xframework.net/ image4=banner04.jpg alt4=開発事例-禁止 weight4=15 (3)follow.php <?php mt_srand((double)microtime()*100000); $random = mt_rand(1,100); $count = 0; $arrayini = parse_ini_file("random.ini",TRUE); for($i =1; $i<=$arrayini['info']['count']; $i++) { if($random > $count && $random <= $count+$arrayini['data']['weight'.$i]) { echo("<a href='".$arrayini['data']['url'.$i]."'> <img border='0' src='".$arrayini['data']['image'.$i]."' width='".$arrayini['info']['width']."' height='".$arrayini['info']['height']."' alt='".$arrayini['data']['alt'.$i]."' /> </a>"); } $count+=$arrayini['data']['weight'.$i]; } ?> 実行すると 「Warning: Error parsing random.ini on line 9 in C:\Apache Software Foundation\Apache2.2\htdocs\test.php\follow.php on line 9」 エラーが表示されます。 原因は何なのでしょうか? Windows Vistaです。

    • ベストアンサー
    • PHP

専門家に質問してみよう