Хорошие числовые хеши

Займите время, чтобы назвать понятие системы хорошо и найти имена, которые связаны, это делает систему более знакомой. Решайтесь переименовывать понятия, чем лучше соединение с миром Вы знаете, тем лучше Ваш мозг может работать с ним.

Просят мнения от людей, которые получают их удары от чистых, простых решений.

Только понятия реализации, необходимые текущему проекту (требование того, чтобы соответствовать требованиям завтрашнего дня или универсальные системы делает Ваш дизайн чрезмерно увеличенным в размере).

12
задан Alix Axel 25 August 2009 в 04:35
поделиться

4 ответа

Возможно, вам этого достаточно:

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

РЕДАКТИРОВАТЬ : Другая аналогичная альтернатива,

echo hash('adler32', $string);
3
ответ дан 2 December 2019 в 22:51
поделиться

Вывод MD5 - это число, как и почти любой вообразимый хэш. Это просто число, которое обычно выражается в шестнадцатеричном формате. Используйте любой удобный для вас алгоритм хеширования, отрежьте от конца столько битов, сколько хотите, и обрабатывайте эти биты как числа. Любой хороший хэш будет иметь свои последние (или первые, или средние) n бит так же равномерно, как и все значение.

4
ответ дан 2 December 2019 в 22:51
поделиться

Вы можете использовать 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
0
ответ дан 2 December 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: