• ベストアンサー

PHPで15桁程度のユニークコード生成

md5() や sha1() などでランダムなコードは生成できますが、15桁程度でユニークなコードを 生成するとなった場合、どの様なものがあるでしょうか? 生成する度に以前生成したものに存在するか確認しなくても良い方法がありましたら 教えていただきたいです。

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

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

すでに回答がありますが・・・ 一般的には、substr(sha1(microtime()), 0, 15) 程度でじゅうぶん実用になります。まず重複することはありませんが、絶対ではありません。∴ ミッションクリティカルな場合にはDBなどで管理すべきです。

takah75
質問者

お礼

ありがとうございます。 教えていただいた処理で、アルファベットの場合のみ更に大文字/小文字をランダムに変換する処理を加えてみました。 こちらで十分実用的に使えそうです。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

どんなものでもいいのであれば 日付+ミリ秒とすれば同時処理さえしなければユニークになりますね >存在するか確認しなくても良い方法 ないです。どうしてもというならデータベースで履歴管理することです

回答No.1

>>生成する度に以前生成したものに存在するか確認しなくてもユニークな md5() や sha1() でもユニークとは限りませんので、厳密にはないでしょう。

関連するQ&A

  • EXCELでの、3桁の擬似乱数生成方法について質問です。

    EXCELでの、3桁の擬似乱数生成方法について質問です。 エクセルで、3桁の擬似乱数をいくつもランダムに生成するにはどのようにすればよろしいでしょうか? 重複する可能性も含んだ擬似乱数の生成方法、宜しくお願い致します。

  • iQRコードの生成と読み取りについて

    iQRコードを読み取れるスマートフォン(のアプリ)や携帯電話は存在するのでしょうか。 また、QRコードを生成できるネット上のサービスやツールが存在するのは存じていますが、 iQRコードを生成できるものはございますか。

  • Code128の生成によりばらばら

    Code128を複数のサイトで生成してみたら形が少し違うのですが、 読み取りはそれぞれ正常に読み取れました。 Code128の生成方法によって形が違うのでしょうか?

  • 乱数の生成について

    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
  • 一意(ユニーク)かつ、ソートに対してランダムなIDの発行方法

    随時増加するあるデータに対して、一意なIDを割り当ててゆきます。 通常は、1, 2, 3, … と連番を割り当てて行けば一意なIDになると思います。 その上で、IDでソートした時に発行順に並ぶのではなく、順番がランダムになるようにしたいのです。 (アルゴリズムを知らない人から、発行順を推測されないようにしたい。) そこで考えたのが、"1", "2", "3", …という文字列に対するハッシュ(SHA1やMD5)ですが、sha1("1"), sha1("2"), sha1("3"), …とIDを発行していった場合、IDが重複してしまう可能性を心配しています。(とても低い確率ではあることは分かっていますが、皆無ではありません。) ハッシュ関数を利用する他に、「一意」で「ランダム」で「衝突の可能性がゼロ」である文字列の生成方法はありませんでしょうか?(可能性がゼロというのは物理的に不可能だと思うので、例えばSHA-1であれば、160bitのハッシュが生成されますが、2^160個のIDを発行しても重複しない、ということを考えます。) 一応、規模は1000万ID程度を考えていますが、もっと大きなオーダーでも衝突しないに越したことはありません。

  • Dreamweaverのコード生成について

    こんにちは。 Dreamweaverのコード自動生成について教えていただきたいと思っています。 Dreamweaver8で、textに色をつける際、自動生成されるコードに外部CSSをあてないように作らさせるにはどうしたらよいのでしょう。 「デザイン」を選択して、文字列に色をつけると、 自動で生成されたコードは下のようになります。 <span class="style1">あいうえお</span> (style1は、.style1 {color: #FF0000}) それを、↓のように自動生成させる方法はありませんか? <span style="color: #FF0000;">あいうえお</span> すべて、<body> ~ </body>の中で完結させる記述を生成させたいのです。styleを使わない方法でもいいのです。 むかし、DREAMWEAVER4を使っていました。 CSSをつかわないあの感覚でソース生成させたいのです。 教えてください。よろしくお願いいたします。

  • アメックスのセキュリティーコードは4ケタ?

    ネットでクレジット払いで商品を買おうとしてるのですが セキュリティコードを入力する部分で躓いています。 アメックスのカードで支払いたいのですが http://www.mpj-ticket.com/securitycode.htm を見ると、裏面の数字ではなく、表面の4ケタの数字がセキュリティコードのようです。 カードを確認すると、確かに表面に4ケタの数字が記載されています。 なので、その4ケタの数字を入れると、「3ケタの数字を入れてください」というエラーになってしまいます。 この場合、どうすればいいでしょうか?

  • PHPでユニークIDを作る

    phpで5桁程度のユニークIDを生成したいと思っています。 5ケタでなくてもそれぐらいの桁数なら大丈夫です。 uniqid()という関数を使うとなると桁数が多すぎて扱いにくいので困っています。 なにかいい方法がありましたら是非教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのトークン生成について

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

    • ベストアンサー
    • PHP
  • ランダム文字列の生成の仕方

    こんばんは。 はじめまして。 JAVAでランダムの文字列を生成する時に何か便利な機能はあるのでしょうか? CGIでは確かあったはずなんですが、 自分なりに探してみたのですがわかりませんでした。 今の自分の考えでは、ランダムで数字は生成できるので それをChar型を使って文字コードで一文字取得して、それを連結するのかな? なんて考えています。 もっといい方法があればできればご教授ください。 よろしくお願いします。

専門家に質問してみよう