Я ищу хэш-строку, но мне нужен вывод, чтобы быть целым числом, поэтому я не могу делать md5. У людей здесь есть любимые числовые хэши, которые они могут просветить. Я использую PHP.
Спасибо!
Я ищу хэш-строку, но мне нужен вывод, чтобы быть целым числом, поэтому я не могу делать md5. У людей здесь есть любимые числовые хэши, которые они могут просветить. Я использую PHP.
Спасибо!
Выход MD5 - это номер, как и в случае с любым воображаемым хэшем. Это просто число, которое обычно выражается в гексагоне. Используйте любой хеш-алгоритм, который вам удобен, измельчите столько бит, сколько хотите, и обработайте эти биты как число. Любой хороший хеш будет иметь свои последние (или первые или средние) n битов, равномерно распределенные как целое значение.
Возможно, для вас это достаточно хорошо:
echo sprintf('%u', crc32($string));
EDIT: другая аналогичная альтернатива,
echo hash('adler32', $string);
Я думаю, что есть несколько хороших хэшей и специфических вопросов PHP уже на Stackoverflow.
Попробуйте hashing
+ php
поиск здесь.
Краткий список,
Вы можете использовать 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