HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

HASH функции
  #1  
Старый 02.06.2010, 10:32
Alekzzzander
Участник форума
Регистрация: 05.09.2007
Сообщений: 151
С нами: 9832600

Репутация: 67
По умолчанию HASH функции

проблема заключается с ее выводом
допустим 123 в crc32 выводит -2008521774
PHP код:
$text_crc32 crc32($text); 
понимаю что это не правильно, а как исправить? как правильно использовать встроенные хеш функции?
примерно та же проблема и с MD4
использую
PHP код:
$text_md4 mhash(MHASH_MD4$text); 
выводит ЕЊЪIрHЈјПҐХЛ

в чем проблема?
 
Ответить с цитированием

  #2  
Старый 02.06.2010, 11:25
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 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
 
Ответить с цитированием

  #3  
Старый 02.06.2010, 11:29
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
С нами: 10467746

Репутация: 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..
 
Ответить с цитированием

  #4  
Старый 02.06.2010, 11:39
Alekzzzander
Участник форума
Регистрация: 05.09.2007
Сообщений: 151
С нами: 9832600

Репутация: 67
По умолчанию

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

  #5  
Старый 02.06.2010, 13:26
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
С нами: 8557551

Репутация: 56
По умолчанию

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пишу на делфи(бесплатно) Vlad3d С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 21 05.08.2009 19:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.