2016-06-01 10 views
1

質問はそのような鍵を生成する方法ではありません。答えのトンがあります。タイムスタンプのようにシンプルすぎるものもあれば、rand()の文字のように他のものは十分にユニークではないものもあります。ユニークでランダムな鍵を生成するもっとも簡単な方法

私は何をしているのですか、両方を組み合わせてみませんか? タイムスタンプを秒単位またはミリ秒単位で入力し、その間にランダムな文字(数字はありません)を追加すると、その結果はランダムでユニークな文字列になりませんか?

質問は1つのプログラミング言語に固有ではないですが、あなたに私はPHPでそれを作ったいくつかのコード与える:

$token = (string) preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime()); 
$l = strlen($token); 
$c = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
for($i = 0; $i < $l; $i++){ 
    $token = substr_replace($token, $c[rand(0, 51)], rand(0, $l+$i), 0); 
} 

は$トークンをエコーし​​ます。

私は本当にrandomness-proの答えを楽しみにしています!

感謝;) レニー

+0

私の意見では最も簡単な方法です:[UUID library](https://github.com/ramsey/uuid)を使用してください。 –

答えて

2

私は、GUIDを生成することを好みます。あなたのためにそれを行ういくつかのコードがあります。

function getGUID(){ 
     if (function_exists('com_create_guid')){ 
      return com_create_guid(); 
     }else{ 
      mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. 
      $charid = strtoupper(md5(uniqid(rand(), true))); 
      $hyphen = chr(45);// "-" 
      $uuid = chr(123)// "{" 
       .substr($charid, 0, 8).$hyphen 
       .substr($charid, 8, 4).$hyphen 
       .substr($charid,12, 4).$hyphen 
       .substr($charid,16, 4).$hyphen 
       .substr($charid,20,12) 
       .chr(125);// "}" 
      return $uuid; 
     } 
    } 

     $GUID = getGUID(); 
     echo $GUID; 

ここは私のソースです。 http://guid.us/GUID/PHP

+0

+1私はGUIDが好きなので、私の質問は、これがユニークでランダムな鍵を生成する良い方法であるかどうかです。シンプルだからこそ見えますが、キャッチがあるのか​​しら? – lenny

+0

GUIDはシンプルで非常に効果的です。もっと説得力のあるチェックが必要な場合http://stackoverflow.com/questions/39771/is-a-guid-unique-100-of-the-time –

+0

はい、私は知っていますが、私の考えがうまくいくかどうか、私が考えることを忘れた何かがありますか? – lenny

関連する問題