xavierfaucon / bravoids
将ID(十进制)转换为Hashids(50进制或62进制)
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4.4.*
This package is not auto-updated.
Last update: 2024-10-02 07:44:39 UTC
README
将ID(十进制)转换为哈希ID(50进制或62进制)。
BravoIDs类提供了两种方法:BravoIDs::encrypt和BravoIDs::decrypt。
BravoIDs::encrypt
描述
<?php /** * * @param int $number The ID you want to convert into a hash * @param string $passPhrase A passphrase that you must provide * @param int $minHashLength Specify the minimum length for the output. * @param bool $safeCharacters Remove all the vowels to generate the output to avoid curse words * * @return string The hash of a converted ID. */ BravoIDs::encrypt($number, $passPhrase, $minHashLength = 0, $safeCharacters = true); ?>
BravoIDs::encrypt
描述
<?php BravoIDs::decrypt(string $hash, string $passPhrase, int $minHashLength = 0, bool $safeCharacters = true); ?>
从哈希中返回一个ID。
参数
- $hash : 您想转换成ID的哈希
- $passPhrase : 您必须提供的密码短语
- $minHashLength (可选 - 默认为0) : 指定输出最小长度。
- $safeCharacters (可选 - 默认为true) : 删除所有元音以生成输出以避免脏话
注意:为了解密哈希,您必须指定与BravoID::encrypt相同的$passPhrase、$minHashLength和$safeCharacters变量。
基本用法
简单地生成ID
<?php echo BravoIDs::encrypt (123, 'myPassPhrase'); // "tr" echo BravoIDs::decrypt ('tr', 'myPassPhrase'); // "123" ?>
高级用法
增加哈希长度
<?php echo BravoIDs::encrypt (123, 'myPassPhrase', 4); // "kNtr" echo BravoIDs::decrypt ('kNtr', 'myPassPhrase', 4); // "123" ?>
注意:如果您使用32位PHP构建,则无法设置$minHashLengh > 5。这在限制部分中解释。
允许所有字符(包括元音,可能会出现脏话)
<?php echo BravoIDs::encrypt (123, 'myPassPhrase', 4, false); // "5u59" echo BravoIDs::decrypt ('5u59', 'myPassPhrase', 4, false); // "123" ?>
限制
根据您的PHP构建,您将受到限制
- 32位PHP构建:整数可以是-2147483648到2147483647
- 64位PHP构建:整数可以是-9223372036854775808到9223372036854775807
我没有在64位PHP构建上运行测试。
在32位上,这种限制意味着您只能转换到2 147 483 647个ID,不能再多了。
此外,当您使用变量$minHashLength时,您将减少可用的ID数量。
进行计算以找到您的数字应具有的最低值,以达到所需的HashLength)
例如,要获取至少X个字符的哈希,您需要number >= base * (X - 1)。
其中base是用于转换您的数字的字符数(base50与$safeCharacters = true和base62与$safeCharacters = false)。
一旦我们知道这个最低值是多少,所有的ID都将“缩放”到那个值,'0'将变成6 250 000(base50和$minHashLength = 4)。
在这种情况下,这会使得2 147 483 647的值减少6 250 000(从'0'到'6 249 999')。
感谢
感谢ivanakimov和https://github.com/ivanakimov/hashids.php,我从那里借用了_consistent_shuffle方法。
感谢Kevin van Zonneveld,他写了这篇文章,我从那里获得了删除元音以获得安全单词的想法:http://kvz.io/blog/2009/06/10/create-short-ids-with-php-like-youtube-or-tinyurl/
BravoID是以这篇文章上提供的函数命名的,该函数曾被称为AlphaID :-)