HASH функции

Discussion in 'PHP' started by Alekzzzander, 2 Jun 2010.

  1. Alekzzzander

    Alekzzzander Elder - Старейшина

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

    в чем проблема?
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    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'));
     
    _________________________
    1 person likes this.
  3. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Функции возращают данные в бинарном виде, надо перевести в символьную строку, например так:
    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 (запамятовал уже).
     
    #3 -=lebed=-, 2 Jun 2010
    Last edited: 2 Jun 2010
    1 person likes this.
  4. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    спасибо, помогло, не знал в каком виде они выводят
     
  5. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    чтобы crc32 получить не отрицательное:
    $text_crc32 = sprintf("%u", crc32('123'));