2014-08-29 67 views
2

在PHP中,crc32($data)hash("crc32", $data)產生完全不同的散列是否有一些具體原因?PHP中的CRC-32奇數

考慮此代碼段(也是在http://ideone.com/eqbin4網上發佈):

<?php 
$data = "message"; 
echo(sprintf("%08x", crc32($data)) . "\n"); 
echo(hash("crc32", $data) . "\n"); 
?> 

輸出:

b6bd307f 
c048b5b8 

什麼我收到錯在這裏,還是這只是一個PHP的好奇心,使用不同的CRC相同類型的散列-32個計算方法?

+0

你在32位PHP嗎? – 2014-08-29 10:21:48

+0

版本是PHP 5.5.11,x86架構在我的本地服務器上。不知道PHP版本ideone.com正在使用哪裏輸出是相同的。 – emkey08 2014-08-29 10:26:04

回答

3

看起來像crc32($d)函數是等於hash("crc32b", $d)調用,而不是hash("crc32", $d)

+1

是的,實際情況似乎如此。謝謝! – emkey08 2014-08-29 10:39:02

+0

但CRC32是「真正的」嗎? – My1 2017-08-31 07:40:23

+0

我會說'crc32'(而不是'crc32b')版本是「真正的」。我認爲*這是在其他語言中以crc32實現的那個。但我會測試這是100%肯定! :) – Jite 2017-08-31 07:52:22