我正在做一些圖像處理代碼,其中我從URL下載一些圖像(作爲BufferedImage)並將其傳遞給圖像處理器。要檢查兩個圖像文件是否相同..Checksum或哈希?
我想避免多次向圖像處理器傳遞相同的圖像(因爲圖像處理操作的成本很高)。圖像的URL結束點(如果它們是相同的圖像)可能會有所不同,因此我可以通過該URL防止出現這種情況。所以我打算做一個校驗和或散列來確定代碼是否再次遇到相同的圖像。
對於md5,我嘗試了Fast MD5,它爲圖像生成了20K +字符長度的十六進制校驗和值(某些示例)。當涉及到數據庫存儲時,顯然存儲這個20K字符散列值將成爲一個問題。因此我嘗試了CRC32(來自java.util.zip.CRC32)。它確實生成了比哈希小得多的長度校驗和。
我明白校驗和和散列是出於不同的目的。爲了上面解釋的目的,我可以使用CRC32嗎?它會解決目的還是我不得不嘗試比這兩個更多的東西?
謝謝, 阿比
[校驗和散列和是相同的(http://en.wikipedia.org/wiki/Checksum)。其實你只是看看不同的算法。 – 2011-06-17 06:33:15
128位MD5哈希值應該足夠您的目的。 – Thor 2011-06-17 06:35:08
順便說一句 - MD5應該創建一個128位散列值,而crc32有32位......你做了什麼來產生20k +長度的十六進制校驗和? – 2011-06-17 06:35:10