Я хочу спросить о хешировании PHP crc32.
я пытался использовать hash('md5','value')
а также md5('value')
его возвращение того же выхода.
выход: 2063c1608d6e0baf80249c42e2be5804
но когда я пытаюсь использовать hash('crc32','value')
а также crc32('value')
его возвращение отличается выводом.
вывод hash (): e0a39b72
crc32 () вывод: 494360628
Кто-нибудь знает, почему он может вернуть другой вывод?
Спасибо 🙂
hash("crc32b", $str)
вернет ту же строку, что иstr_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)
,
Увидеть руководство а также о разнице между crc32 и crc32b
Между ними есть небольшие различия, прежде всего crc32()
использует алгоритм хеширования crc32b
а также crc32()
возвращает целое число в отличие от hash()
который возвращает шестнадцатеричное значение.
$str = 'testing';
$hex = hash('crc32b',$str); // e8f35a06
$dec = crc32($str); // 3908262406
echo dechex($dec) == $hex; // true, both value e8f35a06
echo hexdec($hex) == $dec; // true, both value 3908262406
Имейте в виду, что значения отличаются в 32- и 64-разрядных средах.
Что называет PHP crc32(...)
или же hash("crc32b", ...)
(один возвращает целое число, другой — строку) — это стандарт PKZip / ITU-T V.42 CRC-32. Что называет PHP hash("crc32", ...)
, странно используя то же имя, что и несовместимый PHP crc32()
Функция, отличается, и является BZIP2 CRC-32.