#45028 [Opn->Asn]: CRC32 output endianness is different between crc32() and hash()

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
 ID:               45028
 Updated by:       [email protected]
 Reported By:      jfrusciante at tiscali dot it
-Status:           Open
+Status:           Assigned
 Bug Type:         *Encryption and hash functions
 Operating System: *
 PHP Version:      5.2.6
-Assigned To:      
+Assigned To:      mike
 New Comment:

Mike, can you confirm that this patch is correct?
http://dev.daylessday.org/diff/bug45028.diff


Previous Comments:
------------------------------------------------------------------------

[2008-05-17 16:03:25] jfrusciante at tiscali dot it

Description:
------------
When I use dechex() to convert a crc32(), and when I directly use
hash("crc32b", ...), I do not get the same output. In particular, the
endianness of the hash() output seems inverted.

In other words: the output of crc32() seems to be correct in its
integer representation (I compared it with Python implementation), but
converting it to hexadecimal (with dechex() or with any calculator)
produces a hex string inverted in its endianness respect to the output
of hash('crc32b', ...) with the same input.

Reproduce code:
---------------
printf("dechex(crc32(\"AAAAAAAA\")): ".
dechex(crc32("AAAAAAAA")).
"<br><br>");

printf("hash(\"crc32b\",\"AAAAAAAA\"): "
.hash("crc32b", "AAAAAAAA")
."<br>");

Expected result:
----------------
dechex(crc32("AAAAAAAA")): 79b71c0a
hash("crc32b","AAAAAAAA"): 79b71c0a

(or
dechex(crc32("AAAAAAAA")): 0a1cb779
hash("crc32b","AAAAAAAA"): 0a1cb779
I think the first two are the right ones)

Actual result:
--------------
dechex(crc32("AAAAAAAA")): 79b71c0a
hash("crc32b","AAAAAAAA"): 0a1cb779

Please note that the difference is only in the bytes order.
"0a-1c-b7-79" is like "79-b7-1c-0a" with inverted endianness, while both
lines should output the same values despite different architectures.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=45028&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.