私のテーブルに、ユーザーの新しいレコード(新しいユーザー)を挿入します。フィールドの主キーとして int を設定しています。私が欲しいのは、このIDを安全にすることです。このIDは誰にでも公開されているためです。すべてのユーザーまたは人がこの ID を表示できます。
私が生成するIDが次のような場合:
0000000001
...
0000000023
...
0000000157
...
ID は 1 ずつインクリメントされる順序であるため、他の人が推測するのは簡単です。代わりに、この auto_increment プライマリ ID の英数字表現である別のフィールドに「パブリック」ID を格納したいと考えています。
したがって、データベースでは、テーブルは次のようになります。
id------------------public_id
---------------------------------
0000000001 -------- W3UB3VNAU3222
0000000002 -------- 7BNXYO28CN2KK
ハッシュを使用することを考えました。ただし、ハッシュは 40 以上の固定長です。しかし、公開IDの長さを10文字に固定したいです。一意である必要があり、可能であれば、から生成することを好みますid
これを作成する方法を教えてください。これを行うのに役立つ組み込み関数はありますか?
hash()
関数について次のように読みましたcrc32
: http://www.php.net/manual/en/function.hash.php#104987 8 文字の長さのハッシュが得られます。将来的に衝突することはありますか?
テスト:
echo hash('crc32', '0000000001'); // gives 6c13f76e