Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php hash('crc32') and crc32() return different value

Tags:

php

hash

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 :)

like image 373
Mochammad Zachri Avatar asked Jan 06 '23 00:01

Mochammad Zachri


2 Answers

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

like image 115
Timurib Avatar answered Jan 13 '23 08:01

Timurib


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.

like image 45
Xorifelse Avatar answered Jan 13 '23 10:01

Xorifelse