好的数字哈希值

时间:2009-08-25 04:26:55

标签: php hash

我正在寻找哈希字符串,但我需要输出为整数,所以我不能做md5。这里的人有任何他们可能想要启发我喜欢的数字哈希。我正在使用PHP。

谢谢!

4 个答案:

答案 0 :(得分:4)

MD5的输出是一个数字,就像几乎所有可以想象的哈希一样。它只是一个通常以十六进制表示的数字。使用您可以方便地使用的任何哈希算法,根据需要将多个位切掉,并将这些位视为数字。任何良好的哈希都将使其最后(或第一个或中间) n 位与整个值一样均匀分布。

答案 1 :(得分:3)

也许这对你来说已经足够了:

echo sprintf('%u', crc32($string));

编辑:其他类似的替代方案,

echo hash('adler32', $string);

答案 2 :(得分:1)

答案 3 :(得分:0)

您可以使用base_convert将十六进制更改为十进制数,反之亦然。如果要将整数(作为字符串)转换为十六进制,则限制为32位数或更少,我相信(PHP_INT_MAX)。

php -r 'foreach (hash_algos() as $hash) { echo $hash, "\n", $a = hash($hash, "test"), "\n", $b = base_convert($a, 16, 10), "\n", $c = base_convert($b, 10, 16), "\n", ($c === $a ? "yes" : "no"), "\n\n"; }' > hashes.txt

在我可用的哈希中,这些是我可以在十进制和十六进制之间转换的哈希:

adler32
c1015d04
3238092036
c1015d04
yes

crc32
accf8b33
2899282739
accf8b33
yes

crc32b
d87f7e0c
3632233996
d87f7e0c
yes