PHP5.3を使っています。
PHP
1$tmp = bin2hex(openssl_random_pseudo_bytes(128)); 2var_dump($tmp); echo "<br>"; 3$tmp2= base_convert($tmp,16,36); 4var_dump($tmp2); echo "<br>"; 5$tmp3 = base_convert($tmp2,36,16); 6var_dump($tmp3); echo "<br>";
以上のようにすると、$tmp2
が0gooog08osgg8kgg44cc4s44c4kkkcwc…
のように特定の文字しか出ない、偏った値になります。$tmp3
に至っては0が並んでいるだけです($tmp
と同じになるはずですよね)。何が原因なのか全く分かりません。うまく0-9a-zまで使われるようにするためにはどうすれば良いのでしょうか?よろしくお願いします。
追記
PHP
1$tmp = bin2hex(openssl_random_pseudo_bytes(8)); // 短くしました 2var_dump($tmp); echo "<br>"; 3$tmp2= base_convert($tmp,16,36); 4var_dump($tmp2); echo "<br>"; 5$tmp3 = base_convert($tmp2,36,16); 6var_dump($tmp3); echo "<br>";
結果
string(16) "ae130497bdec2f94"
string(13) "2nar3567tdusw"
string(16) "ae130497bdec3800"
どうやら短い場合でも最後の方が合わなくなるみたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/09 03:29
2016/12/09 03:40