phpで短いユニークなIDを生成する
ども、僕です
ユニークなユーザIDを生成する必要があり、hashidsというライブラリを使うことにしたよ
その導入方法や使い方を説明するよ
Hashidsとは?
短くてユニークなIDを生成してくれるライブラリで、PHPを始め、Javascript、Ruby、Java、Pythonなど多くの言語をサポートしてる
ユニークIDをPHPで生成するには色々方法があるんだけど、長ったらしいIDになりがちだし、ユニークであることが保証されないことも
そんなわけで短いユニークIDが手軽に生成できるHashidsを利用することにしたよ
特徴1:復号できる
通常、パスワードを暗号化する時は非可逆な方法でハッシュを生成するけど、このHashidsは可逆
つまり復号できる(元に戻せる)
それ故に、パスワードに使うにはあまり向いてない(と思われる)
特徴2:数値のみ
Hashidsは数値からのみハッシュを生成できる
だから文字列からは生成することができない
導入方
コンポーザーで以下のコマンドを叩く
composer require hashids/hashids
以上
使い方
PHPでの最も簡単な使い方
エンコード(符号化)
$hashids = new Hashids\Hashids();
$encodeId = $hashids->encode(1);
// → R3i
これだけで「R3i」のような短いハッシュが得られる
素晴らしい♩
デコード(復号化)
反対に、この結果を復号化するにはこうする
// デコード
$decodeId = $hashids->decode($encodeId);
echo $decodeId[0];
// → 1
元の数値を取得することができる
返却値が配列になってることに注意!
オプション
ソルト
暗号化の友、ソルトの指定はこうする
$hashids = new Hashids\Hashids('this is salt');
$encodeId = $hashids->encode(1);
// → O3d
「this is salt」の部分を変更することで、自分だけのハッシュ値を生成できる
文字数
出力されるハッシュの文字数を指定
$hashids = new Hashids\Hashids('this is salt',10);
$encodeId = $hashids->encode(1);
// → Od3dEj39fD
暗号化記号
ハッシュの記号は、デフォルトでは大文字小文字を含んだ英数字「abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890」から使用される
これを変更するには以下のように指定する
$hashids = new Hashids\Hashids('this is salt',10,'abcdefg012345');
$encodeId = $hashids->encode(1);
// → 5b01dfa3e4
ディスカッション
コメント一覧
まだ、コメントがありません
新たにPostされたDocs
: ツール関連
キーボードを銀軸から赤軸に買い替えた話
約3年半前、仕事で使うキーボードとしてARCHISS ProgresTouchの ...: スマホ
楽天モバイルがおすすめできない人の特徴とは?
楽天モバイルの最強プランをおすすめできない人の特徴を簡単にまとめてみました また ...: システム開発
なぜスクラムがつらいのか?開発現場が疲弊するのか?スクラムに対する違和感と共に原因を考えてみた
今ではどこの開発現場に行っても、やれスクラムスクラムと、まるでスクラムでもやって ...: Laravel
1つのテーブルを複数のテーブルと結合したい【Laravel10】
1つのテーブルを2つの異なるテーブルに対して結合したいケースがあったのでLara ...: Laravel
Laravelで複数画像アップロード時のvalidateを指定【Laravel10】
jQuery - Image Uploaderを使って、フォームから複数の画像を ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities