Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

02.06.2010, 10:32
|
|
Участник форума
Регистрация: 05.09.2007
Сообщений: 151
Провел на форуме: 1327895
Репутация:
67
|
|
HASH функции
проблема заключается с ее выводом
допустим 123 в crc32 выводит -2008521774
PHP код:
$text_crc32 = crc32($text);
понимаю что это не правильно, а как исправить? как правильно использовать встроенные хеш функции?
примерно та же проблема и с MD4
использую
PHP код:
$text_md4 = mhash(MHASH_MD4, $text);
выводит ЕЊЪIрHЈјПҐХЛ
в чем проблема?
|
|
|

02.06.2010, 11:25
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
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'));
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
|
|
|

02.06.2010, 11:29
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от 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 (запамятовал уже).
Последний раз редактировалось -=lebed=-; 02.06.2010 в 12:16..
|
|
|

02.06.2010, 11:39
|
|
Участник форума
Регистрация: 05.09.2007
Сообщений: 151
Провел на форуме: 1327895
Репутация:
67
|
|
спасибо, помогло, не знал в каком виде они выводят
|
|
|

02.06.2010, 13:26
|
|
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме: 217996
Репутация:
56
|
|
чтобы crc32 получить не отрицательное:
$text_crc32 = sprintf("%u", crc32('123'));
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|