鱿鱼
它将一个或多个非负整数编码成一个简短的、URL 安全的字符串,并将该字符串解码回原始数字。它是 Hashids 的后继者,并且相同的编码方式被 40 多种语言支持,因此在 PHP 中生成的 ID 在 JavaScript、Python 或 Rust 中使用相同的设置进行解码。PHP 包需要 PHP 8.1 以及以下任一版本:
gmp
或者
bcmath
扩展其任意精度数学。
常见用途是将顺序数据库键隐藏在公共 URL 中。
/invoices/1
和
/invoices/2
它会告诉访客你有多少条记录,并邀请他们浏览整个范围。而先对主键进行编码,则会将其转换为不透明的字符串。
数字的编码和解码
构造函数不接受任何必需参数。请传递一个整数数组。
encode()
然后把它们读回去
decode()
:
使用
鱿鱼\鱿鱼
;$sqids
=
新的
鱿鱼
();$id
=
$sqids
->
编码
([
7
,
8
,
9
]);
// "ylrR3H"$数字
=
$sqids
->
解码
($id);
// [7, 8, 9]
因为一个 ID 可以包含多个数字,所以你可以将相关的值打包到一个令牌中,例如模型 ID 和类型鉴别器,并在返回时一步解包它们。
垫料长度最短
默认情况下,ID 的长度仅根据需要而定,因此较小的数字会生成非常短的字符串。
minLength
将每个 ID 填充到固定大小,这样可以保持生成的 ID 统一,并使短小、容易猜测的值更难被偶然发现:
$sqids
=
新的
鱿鱼
(
最小长度
:
12
(英文):$sqids
->
编码
([
7
,
8
,
9
]);
// "ylrR3HjJRet1"
自定义字母
字母表决定了 ID 中出现的字符以及它们的排列顺序。提供自定义字母表会改变输出结果,并起到基本的应用程序级加密作用,因此相同的数字会生成与使用默认字母表不同的 ID:
$sqids
=
新的
鱿鱼
(
字母
:
'k3G7QAe51FCsPW92uEOyq4Bg6Sp8YzVTmnU0liwDdHXLajZrfxNhobJIRcMvKt'
,(英文):$sqids
->
编码
([
7
,
8
,
9
]);
// "fbmzYm"
黑名单
Sqids 内置了一个常用脏话列表,会对包含这些词语的任何 ID 进行重新编码,从而自动避免生成的 ID 中包含这些词语。当您想要筛选特定内容时,可以将该列表替换为您自己的词语:
$sqids
=
新的
鱿鱼
(
黑名单
:[
'fbmzYm'
]);// 返回一个避开被屏蔽词的不同 ID$sqids
->
编码
([
7
,
8
,
9
]);
何时使用Sqids(以及何时不使用)
Sqids 是一个编码器,而非加密工具。任何了解字母表的人都可以逆向破解其输出,因此它不应用于保护敏感数据或替代授权检查。
它适用于面向公众的标识符和链接缩短、数据库主键编码、将少量整数打包成单个引用以减少查找次数,以及一次性登录链接等短期令牌。但对于任何必须保密的内容、个人或敏感数据以及访问控制,它都是不合适的工具。对于这些情况,应该使用真正的加密和适当的授权机制。
使用 Composer 安装:
作曲家
要求
鱿鱼/鱿鱼
您可以阅读源代码和完整文档。 GitHub 。







