Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   HASH функции (https://forum.antichat.xyz/showthread.php?t=208557)

Alekzzzander 02.06.2010 10:32

HASH функции
 
проблема заключается с ее выводом
допустим 123 в crc32 выводит -2008521774
PHP код:

$text_crc32 crc32($text); 

понимаю что это не правильно, а как исправить? как правильно использовать встроенные хеш функции?
примерно та же проблема и с MD4
использую
PHP код:

$text_md4 mhash(MHASH_MD4$text); 

выводит ЕЊЪIрHЈјПҐХЛ

в чем проблема?

Gifts 02.06.2010 11:25

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')); 


-=lebed=- 02.06.2010 11:29

Цитата:

Сообщение от Alekzzzander
проблема заключается с ее выводом
допустим 123 в crc32 выводит -2008521774
PHP код:

$text_crc32 crc32($text); 

понимаю что это не правильно, а как исправить? как правильно использовать встроенные хеш функции?
примерно та же проблема и с MD4
использую
PHP код:

$text_md4 mhash(MHASH_MD4$text); 

выводит ЕЊЪIрHЈјПҐХЛ

в чем проблема?

Функции возращают данные в бинарном виде, надо перевести в символьную строку, например так:
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 (запамятовал уже).

Alekzzzander 02.06.2010 11:39

спасибо, помогло, не знал в каком виде они выводят

roxblnfk 02.06.2010 13:26

чтобы crc32 получить не отрицательное:
$text_crc32 = sprintf("%u", crc32('123'));


Время: 22:31