查 PHP 上 CRC32 的資料時,查到讓人噴飯的 comment:
For those who are wondering, there appears to be no fundamental difference between hash_file('md5')/hash_file('sha1') and md5_file()/sha1_file(). They produce identical output and have comparable performance. There is, however, a difference between hash_file('crc32') and something silly like crc32(file_get_contents()). crc32(file_get_contents())'s results are most similar to those of hash_file('crc32b'), just with the octets reversed: <?php $fname = "something.png"; $hash = hash_file( 'crc32', $fname ); echo "crc32 = $hash\n"; $hash = hash_file( 'crc32b', $fname ); echo "crc32b = $hash\n"; $hash = sprintf("%x",crc32(file_get_contents($fname))); echo "manual = $hash\n"; ?> crc32 = f41d7f4e crc32b = 7dafbba4 manual = a4bbaf7d
不只是 hash_file()
抓出來不一樣,連 algorithm 都來亂...