2016-11-22 4 views
1

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

выход: 2063c1608d6e0baf80249c42e2be5804

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

хэш() Выход: e0a39b72

crc32() Выход: 494360628

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

спасибо :)

+0

Это потому, что один является хешем, и один вычисляет многочлен строки ... – Andrew

+0

я вижу, спасибо :) так, как сделать вывод таким же? –

ответ

0

hash("crc32b", $str) будет возвращать ту же строку str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT).

См manual, а также о разнице между crc32 and crc32b

+0

Вместо 'str_pad (..., 8, '0', STR_PAD_LEFT)' вы можете делать 'sprintf ('% 08s', ...)' –

2

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^