我正在寻找哈希字符串,但我需要输出为整数,所以我不能做md5。这里的人有任何他们可能想要启发我喜欢的数字哈希。我正在使用PHP。
谢谢!
答案 0 :(得分:4)
MD5的输出是一个数字,就像几乎所有可以想象的哈希一样。它只是一个通常以十六进制表示的数字。使用您可以方便地使用的任何哈希算法,根据需要将多个位切掉,并将这些位视为数字。任何良好的哈希都将使其最后(或第一个或中间) n 位与整个值一样均匀分布。
答案 1 :(得分:3)
也许这对你来说已经足够了:
echo sprintf('%u', crc32($string));
编辑:其他类似的替代方案,
echo hash('adler32', $string);
答案 2 :(得分:1)
我认为Stackoverflow上已经存在一些很好的散列和PHP特定问题
在这里试试hashing
+php
search。
简短列表,
答案 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