php hash (‘crc32’) и crc32 () возвращают разные значения

Я хочу спросить о хешировании PHP crc32.
я пытался использовать hash('md5','value') а также md5('value') его возвращение того же выхода.

выход: 2063c1608d6e0baf80249c42e2be5804

но когда я пытаюсь использовать hash('crc32','value') а также crc32('value') его возвращение отличается выводом.

вывод hash (): e0a39b72

crc32 () вывод: 494360628

Кто-нибудь знает, почему он может вернуть другой вывод?

Спасибо 🙂

2

Решение

hash("crc32b", $str) вернет ту же строку, что и str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT),

Увидеть руководство а также о разнице между crc32 и crc32b

1

Другие решения

Между ними есть небольшие различия, прежде всего 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-разрядных средах.

2

Что называет PHP crc32(...) или же hash("crc32b", ...) (один возвращает целое число, другой — строку) — это стандарт PKZip / ITU-T V.42 CRC-32. Что называет PHP hash("crc32", ...), странно используя то же имя, что и несовместимый PHP crc32() Функция, отличается, и является BZIP2 CRC-32.

0