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
ディスカッション
コメント一覧
まだ、コメントがありません
よくLoadingされてるDocs
新たにPostされたDocs
: ウェブサービス
メルカリやラクマの商品がいつ出品されたのかを調べる裏技
メルカリやラクマなどで商品を探してると、ときどき、 「この商品はいつ出品されたも ...: 仕事環境
15年前のエアコンに洗浄スプレーしたら想像以上にキレイになった
うちのエアコンは新品で購入してからすでに15年が経過しています にもかかわらず、 ...: Laravel
一定時間で消えるフラッシュメッセージを簡単に実装[Laravel8]
以前、手軽にフラッシュメッセージが実装できるnotieを紹介しました 今回は、そ ...: Laravel
ランダムな文字列やユニークなIDをLaravelで生成
random use Illuminate\Support\Str; // 引数 ...: スマホ
4,837円あげるって言うからOCNモバイルOneにLinksmateから乗り換えたんですよ
これまでは僕はスマホの通信会社に、MVNOのLinksmateを使ってきました ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities