勉強したことのメモ

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

  関連記事

PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方

PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...

PHPのエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法

ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及 ...

PHPにて「php-ulid」ライブラリを用いてULIDを生成する方法

先日MySQLにてUUIDを発行するメモを書いたがUUID v1だと生成時間によ ...

PHPでExcelシートを出力する方法(PhpSpreadsheet)

PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在 ...

PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法

PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...