PHP的CRC32函数需要注意的问题(或坑)
复制代码代码如下所示:
功能_gethash($用户名)
{
$ hash = CRC32($用户名)% 512;
返回$哈希;
}
功能_gettable($用户名)
{
哈希=自我::_gethash美元(美元的用户名);
return'user_。$哈希;
}
首先,我们产生对当地32位窗口的良好数据并插入相应的表格,然后通过服务器程序和数据(64 Linux),并发现数据没有发现。经过调查,发现服务器上原有的CRC32的结果是不同的的地方。它是唯一已知的PHP手册,CRC32的接口是机器原本相关。
PHP手册的说明:
复制代码代码如下所示:
因为PHP的整数类型是签署了许多crc32校验结果,校验和,它也被称为对与错。
由于CRC32返回在32位机器会产生溢出,这样的结果可能是负面的。它不会泄漏的64位机,所以它总是积极的。
CRC算法是根据位的字长计算的。
CRC32函数计算php_int_size,php_int_max,按照PHP两常数
两个常数的定义:
的整数字长是平台相关的,虽然最大约为二十亿(32位有符号)。PHP不支持无符号整数,一个整数的长度可以由一个常数php_int_size表示,和最大值可以由一个恒定的php_int_max因为PHP 4.4.0和PHP 5.0.5代表。
php_int_size:4,php_int_max:2147483647在32位输出
php_int_size:8,php_int_max:922337203685477580在64位输出