douhuan6065
douhuan6065
2016-11-22 12:19
浏览 154
已采纳

php hash('crc32')和crc32()返回不同的值

i want to ask about PHP crc32 hashing. i'm tried using hash('md5','value') and md5('value') its return same output.

output : 2063c1608d6e0baf80249c42e2be5804

but when i'm try to use hash('crc32','value') and crc32('value') its return different output.

hash() output : e0a39b72

crc32() output : 494360628

anyone know why it can return a different output?

thanks :)

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • duanpei8518
    duanpei8518 2016-11-22 12:24
    已采纳

    hash("crc32b", $str) will return the same string as str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT).

    See manual and also about difference between crc32 and crc32b

    点赞 评论
  • douna2633
    douna2633 2016-11-22 12:34

    There are minor differences between them, first of all crc32() uses the hashing algorithm crc32b and crc32() returns an integer unlike hash() that returns a hexadecimal value.

    $str = 'testing';
    
    $hex = hash('crc32b',$str); // e8f35a06
    $dec = crc32($str);         // 3908262406
    
    echo dechex($dec) == $hex; // true, both value e8f35a06
    echo hexdec($hex) == $dec; // true, both value 3908262406
    

    Keep in mind that the values differ on 32 and 64 bit environments.

    点赞 评论
  • duanli3277
    duanli3277 2016-11-22 23:32

    What PHP calls crc32(...) or hash("crc32b", ...) (one returning an integer, the other a string) is the standard PKZip/ITU-T V.42 CRC-32. What PHP calls hash("crc32", ...), oddly using the same name as the incompatible PHP crc32() function, is different, and is the BZIP2 CRC-32.

    点赞 评论

相关推荐