我正在做一些图像处理代码,其中我从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