如何将PHP的crc32哈希转换为MySQL等价?

时间:2012-10-26 11:44:02

标签: php sql hash

显然,MySQL的CRC32()函数返回一个无符号的BIGINT,而PHP则返回十六进制值。

在PHP中:

hash('crc32','hello world') == 7813f744

在MySQL中:

SELECT CRC32('hello world') == 222957957

CRC32值存储在CHAR(8)列中。

我无法弄清楚如何将PHP生成的哈希值转换为MySQL只用SQL 生成的相同值。显而易见的似乎不起作用:

SELECT HEX(CRC32('hello world')) == D4A1185

SELECT CONV('7813f744',16,10) == 2014574404

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果你有64位平台,你可以安全地使用PHP中的crc32函数和MySQL中的CRC32。快速测试:

  php > echo crc32('foobar') . "\n";
  2666930069

MySQL的:

  >select crc32('foobar');
  +-----------------+
  | crc32('foobar') |
  +-----------------+
  |      2666930069 |
  +-----------------+
  1 row in set (0.00 sec)

答案 1 :(得分:0)

可以使用返回与mysql中相同值的包装函数:

sample