delight-im / ids
PHP 的简短、混淆和高效 IDs
v1.0.1
2016-09-10 15:18 UTC
Requires
- php: >=5.6.0
- ext-gmp: *
- jenssegers/optimus: ^0.2.1
Requires (Dev)
- phpseclib/phpseclib: ^2.0
This package is auto-updated.
Last update: 2024-08-24 06:43:44 UTC
README
PHP 的简短、混淆和高效 IDs
无需更改数据库。您只需要原始的(整数)ID。
无冲突。可逆。
为什么我需要这个?
- 不要将信息泄露给你的竞争对手(例如每日订单数量、每日注册数)
- 取消顺序 ID 以防止资源枚举
- 略微混合 ID,使其更难猜测
通过混淆实现安全
要求
- PHP 5.6.0+
- GMP 扩展
安装
-
通过 Composer 包含库 [?]
$ composer require delight-im/ids
-
包含 Composer 自动加载器
require __DIR__ . '/vendor/autoload.php';
用法
创建实例
$generator = new \Delight\Ids\Id();
编码和解码 IDs
$generator->encode(6); // => "43Vht7" $generator->decode('43Vht7'); // => 6
在不混淆的情况下缩短数字
$generator->shorten(3141592); // => "vJST" $generator->unshorten("vJST"); // => 3141592
在不缩短的情况下混淆数字
$generator->obfuscate(42); // => 958870139 $generator->deobfuscate(958870139); // => 42
定制
- 打乱用于基数转换的字母表中的字符。调用
\Delight\Ids\Id::createRandomAlphabet()
可能有助于此目的。您也可以完全更改字母表,但通常不需要这样做。 - 将您的新的字母表作为构造函数的第一个参数传递。
- 克隆此存储库,然后执行文件
tests/index.php
以生成您自定义的质数、逆质数和 Knuth 乘法散列的随机数。 - 将您的三个新数字分别作为构造函数的第二个、第三个和第四个参数传递。
贡献
欢迎所有贡献!如果您想做出贡献,请首先创建一个问题,以便讨论您的功能、问题或疑问。
许可
本项目根据 MIT 许可证 的条款进行许可。