2016-10-06 12 views
0

私は固有IDを生成する必要のあるアプリケーションを作成しています。javascriptで固有のBase-64 IDを生成する

IDを生成する際には、衝突を避けるための最良の方法は、単にブルートフォースを生成してからチェックすることですか、独自の生成をガーナンシーする方法です。

私はブルートフォース方式がしばらくはうまくいくと確信していますが、Googleのような企業はこの方法を使用していないと感じています。

他にもnode.jsで実際に生成する方法があります。

私が「0から63」からint型のを生成すると考えると、このように、ベース64にパース:

var map = { 
    0:0, 1:1 ... 16:"Q" ... 63:"/" 
}; /* I used object so you can see the indexes, 
this would be an array - or even a string? */ 
for (var i = IDLENGTH, id=""; i--;) id+=map[~~(Math.random*64)]; 

しかしこれは、特に最初の場所でmapを持つ、inneficientです。

私はSOより多くの意味を作るようですが、これは私が必要なものを合わせていないようです

console.log(new Buffer("Hello World").toString('base64')); 
> SGVsbG8gV29ybGQ= 

を投稿し、文字セットのこの変換ではないでしょうか?他のコードのこのpeiceを見ましたか

+0

UUIDを生成し、それをbase64に変換します。 –

+0

カウンタを使用してbase64エンコードしますか? – sh1

答えて

0

これは非常に未解決な問題ですが、おそらくUUIDを生成したいと考えています。基本的にはランダムな128ビット数です。正しく実行された場合、複製の確率はextremely lowです。ほとんどのアプリケーションでは、チェックする必要は厳しくありませんが、やはりやりたいと思うかもしれません。

これを自分で実装する代わりによくテストされたライブラリを使用してください。私はnode-uuidをお勧めします。良い乱数を生成することは、暗号操作と非常によく似ています。

+0

downvoteの説明があれば感謝します。 OPのアプローチが意味をなさないのか、エンコーディング周辺の混乱に役立つのか、さらに詳しく説明できます。 – svens

関連する問題