проблема заключается с ее выводом допустим 123 в crc32 выводит -2008521774 PHP: $text_crc32 = crc32($text); понимаю что это не правильно, а как исправить? как правильно использовать встроенные хеш функции? примерно та же проблема и с MD4 использую PHP: $text_md4 = mhash(MHASH_MD4, $text); выводит ЕЊЪIрHЈјПҐХЛ в чем проблема?
Alekzzzander Что в вашем понимании "неправильно"? Они возвращают ровно то, что должны. CRC32 возвращает целочисленное (int) 32-битное число. Mhash - возвращает бинарный хэш, в отличие от функций md5 которые возвращают hex Если же вам требуется получение hex хешей в обоих случаях, то следует использовать: PHP: $hash = unpack('H*',mhash(MHASH_MD4, '1234123')); echo $hash[1]."\r\n"; // Или для crc32 будет так: echo dechex(crc32('1234123'));
Функции возращают данные в бинарном виде, надо перевести в символьную строку, например так: PHP: $text='123'; $text_crc32 = dechex(crc32($text)); $text_md4 = bin2hex(mhash(MHASH_MD4, $text)); echo $text_crc32."\r\n".$text_md4; P.S. Правильный ответ выше, crc32 - возвращает тип int (запамятовал уже).