勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにて「hashids(Sqids)」ライブラリで数値からユニークなランダム英数字のIDに変換する方法

  PHP

PHPにてユーザID等を推測されないよう数値のIDからユニークなランダム英数字のIDに変換したかった。また、逆にランダム英数字のIDから数値のIDに再変換もしたかった。調べたところ「hashids(Sqids)」ライブラリで対応できる模様。以下に実装方法のメモ。

 

hashids(Sqids)

公式サイト

https://sqids.org/

ライブラリ名だけど元々はhashidsで後からSqidsになったみたい。

GitHub

https://github.com/vinkla/hashids

 

インストール

サーバにSSH接続し以下コマンドでインストールする。

composer require hashids/hashids

 

利用方法

ソースコード

<?php
require_once 'vendor/autoload.php';

use Hashids\Hashids;

//ハッシュ化させるID
$id = 5;

//ハッシュの長さ
$length = 10;

$hash_class = new Hashids('', $length);
$encode_id = $hash_class->encode($id);

var_dump($encode_id); //string(10) "4openRe7Az"

$decode_id = $hash_class->decode($encode_id);

var_dump($decode_id); //array(1) { [0]=> int(5) }

ハッシュの長さについて

new Hashids()の第二引数でハッシュの長さを指定できるが、正確にその長さになるというわけではなく、指定した長さに収まる設定とのこと。

復号化について

復号化すると配列で返ってくる点に注意する。

 

その他

アクセスIPからランダム英数字のIDを作成したい場合は以下過去記事参照。

PHPでアクセスIPからランダム英数字のIDを作成

 

 - PHP

  関連記事

HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)

HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...

PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法

PHPで外部のAPI等にリクエストする際に可能であればfile_get_cont ...

PHPで画像を比較して類似度を算出する「image-comparator」ライブラリの利用方法

PHPで画像の類似度を計測したい。ただ、そのためのロジックが全く分からないためラ ...

PHPでデータベースを取り扱いやすくなるORMライブラリ「idiorm」の利用方法

Codeigniterでデータベースを取り扱う際にクエリビルダクラスを用いて可読 ...

PHP Qr Codeライブラリを使用してQRコードを生成する方法

PHPでQRコードを生成したい。大分前にGoogle Chart APIを用いて ...