2017-01-30 12 views
0

このオブジェクトのIDentifierを生成するために何かを識別したいときがあります。ランダムな識別子:安全なVS固有。何を選ぶ?

場合によってはrandを使用することもあります。そこにこれらの2つの方法の結果との間の違いだろう

  1. Data::UUID
  2. Crypt::PRNG

:現在、私は間ですか?

$id = Data::UUID->new->create_bin; # 
$id = Crypt::PRNG::random_bytes(16); # https://metacpan.org/pod/Crypt::PRNG#random_bytes 

両方とも16バイトランダムです。インタフェースに関係なく、さらなる違いはありますか?私の場合は

UPD
私はそれはそれがために使用されているものによって異なりStripe

+1

どのIDが使用されていますか? – simbabque

+0

randを使用しないでください。安全でもユニークでもありません。ドキュメントから: "暗号は安全ではありません。セキュリティに敏感な状況では、それに頼るべきではありません。" – zaph

+0

@zaph、彼らは代替手段を探しているので、OPはすでにそれを認識しているようです! – ikegami

答えて

2

にクエリをidentificateするランダムな文字列としてIDを使用します。

あなたの変数名が示唆するように使用されている場合、それは一意である必要があります。

たとえば、2人のユーザーが同じセッションIDを共有した場合、同じセッションを共有します。

たとえば、2人のユーザーが同じ一時ファイル名を共有した場合、同じファイルが共有されます。

これは暗号化キーなので、エントロピーが最大になるようにランダムにします。

+0

私は自分の質問を更新しました。だから私の目的のために、私はこれらの2つのモジュールのいずれかを使うかもしれないが、そうでないかもしれない。 –

+0

明らかにそうではありません。一意のIDを作成し、他のIDは作成しないためです。 – ikegami

関連する問題