勉強したことのメモ

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にて「php-ulid」ライブラリを用いてULIDを生成する方法

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

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

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

PHPで「ramsey/uuid」ライブラリを用いてUUIDを生成する方法

PHPでUUID(Universally Unique Identifier)を ...

PHPのバリエーションライブラリ「Valitron」の導入及び利用方法

フォーム等の入力内容チェックをPHP側で行う際、現状は素のPHPで書いているけど ...

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

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