note 107920 added to function.hash
| From: | sneskid at hotmail dot com | Date: | Wed, 14 Mar 2012 21:32:48 +0000 |
| Subject: | note 107920 added to function.hash | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-186668@lists.php.net to get a copy of this message | ||
On two different servers I found that crc32() relates to hash('crc32b',)
This may be good to know if you are writing a crc32_file function based on hash_file.
(The example does not compensate for negative crc32 results)
<?php
$val = 'hello';
var_dump(crc32($val) == ( '0x' . hash('crc32b', $val) ) ); // bool(true)
var_dump(crc32($val) == ( '0x' . hash('crc32', $val) ) ); // bool(false)
?>
Also if you are looking for a way to reduce collisions and still keep the hash result small (smaller
than say md5) you could get a nice database friendly 64 bit value by using hash/crc32 and
hash/crc32b, which is slower than a single md5 but the result may be more suitable for certain
tasks.
<?php
$val = 'hello';
$crc64 = ( '0x' . hash('crc32', $val) . hash('crc32b', $val) ) );
var_dump($crc64); // string(18) "0x3d6531193610a686"
var_dump($crc64 + 0); // int(4423996193312384646)
?>
(examples tested on php 5.2.17)
note: ('0x' . $hex . + 0) is faster than base_convert($hex,16,10)
----
Server IP: 66.207.199.35
Probable Submitter: 69.159.196.196
----
Manual Page -- http://www.php.net/manual/en/function.hash.php
Edit -- https://master.php.net/note/edit/107920
Del: integrated -- https://master.php.net/note/delete/107920/integrated
Del: useless -- https://master.php.net/note/delete/107920/useless
Del: bad code -- https://master.php.net/note/delete/107920/bad+code
Del: spam -- https://master.php.net/note/delete/107920/spam
Del: non-english -- https://master.php.net/note/delete/107920/non-english
Del: in docs -- https://master.php.net/note/delete/107920/in+docs
Del: other reasons-- https://master.php.net/note/delete/107920
Reject -- https://master.php.net/note/reject/107920
Search -- https://master.php.net/manage/user-notes.php