2012-04-26 13 views
0

この関数を使用してユニークなAPIキーを生成し、データベースに格納しています。md5を使用して同じハッシュキーを生成する可能性はありますか?

strtoupper(md5(uniqid(rand(), TRUE))); 

は、上記の関数で同じハッシュキーを生成する可能性がありますか?

+1

これを使用します:echo strtoupper(md5(date( 'dmYHisu'))); - それは非常にユニークなキーを作成します&私はこれを使用する場合は、 – Frank

答えて

1

一意ID機能によって生成されたユニークな値(すなわち、異なる値はになりますMD5ハッシュアルゴリズムを使用した場合、衝突のかなりの可能性がある、実際にはかなりユニークですが同じハッシュ値)。実際には、MD5は「暗号的に壊れており、今後の使用には適していません」とUS-CERTであり、衝突が懸念される場合は、代わりにSHA256/SHA512アルゴリズムの使用を検討する必要があります。

+0

が発生します:echo strtoupper(md5(date( 'dmYHisu'))); - 非常に一意になります。衝突は発生しません。 – Frank

+0

com_create_guid()メソッドを使用して、PHPでGUID値を作成することもできます。理論的に言えば、ポイントは残っています:十分な大きさのデータセットでは、MD5が使用される衝突の可能性がかなり高くなります。実際には、生成されるAPIキーの数が数十億を超える可能性は低いので、あまり心配する必要はありません:-)。 – BluesRockAddict

+0

サポートのために感謝@BluesRockAddict – Frank

2

uniqidはミリ秒単位の時間を基準にしており、ランダムなプレフィックスと組み合わせることはほとんどありません。

uniqid詳細は以下を参照してください: PHP: uniqid - Manual

関連する問題