Просмотр полной версии : HASH функции
Alekzzzander
02.06.2010, 10:32
проблема заключается с ее выводом
допустим 123 в crc32 выводит -2008521774
$text_crc32 = crc32($text);
понимаю что это не правильно, а как исправить? как правильно использовать встроенные хеш функции?
примерно та же проблема и с MD4
использую
$text_md4 = mhash(MHASH_MD4, $text); выводит ЕЊЪIрHЈјПҐХЛ
в чем проблема?
Alekzzzander Что в вашем понимании "неправильно"? Они возвращают ровно то, что должны. CRC32 возвращает целочисленное (int) 32-битное число. Mhash - возвращает бинарный хэш, в отличие от функций md5 которые возвращают hex
Если же вам требуется получение hex хешей в обоих случаях, то следует использовать: $hash = unpack('H*',mhash(MHASH_MD4, '1234123'));
echo $hash[1]."\r\n";
// Или для crc32 будет так:
echo dechex(crc32('1234123'));
-=lebed=-
02.06.2010, 11:29
проблема заключается с ее выводом
допустим 123 в crc32 выводит -2008521774
$text_crc32 = crc32($text);
понимаю что это не правильно, а как исправить? как правильно использовать встроенные хеш функции?
примерно та же проблема и с MD4
использую
$text_md4 = mhash(MHASH_MD4, $text); выводит ЕЊЪIрHЈјПҐХЛ
в чем проблема?
Функции возращают данные в бинарном виде, надо перевести в символьную строку, например так:
$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 (запамятовал уже).
Alekzzzander
02.06.2010, 11:39
спасибо, помогло, не знал в каком виде они выводят
roxblnfk
02.06.2010, 13:26
чтобы crc32 получить не отрицательное:
$text_crc32 = sprintf("%u", crc32('123'));
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot