PHP 的简短、混淆和高效 IDs

v1.0.1 2016-09-10 15:18 UTC

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 扩展

安装

  1. 通过 Composer 包含库 [?]

    $ composer require delight-im/ids
    
  2. 包含 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

定制

  1. 打乱用于基数转换的字母表中的字符。调用 \Delight\Ids\Id::createRandomAlphabet() 可能有助于此目的。您也可以完全更改字母表,但通常不需要这样做。
  2. 将您的新的字母表作为构造函数的第一个参数传递。
  3. 克隆此存储库,然后执行文件 tests/index.php 以生成您自定义的质数、逆质数和 Knuth 乘法散列的随机数。
  4. 将您的三个新数字分别作为构造函数的第二个、第三个和第四个参数传递。

贡献

欢迎所有贡献!如果您想做出贡献,请首先创建一个问题,以便讨论您的功能、问题或疑问。

许可

本项目根据 MIT 许可证 的条款进行许可。