我正在寻找一种根据文件内容识别文件的方法。因此,我需要一种独立于文件位置、名称、属性等的方法。
通常,我会使用像SHA-1或MD5这样的哈希函数。问题在于我想要识别的文件的大小。这些文件通常在5-15 GB之间。
我的SHA-1哈希方法不是一个好的解决方案。对这么大的文件进行哈希处理需要几分钟时间... 我需要更快的方法,在几秒钟内就能识别之前扫描过的文件。
除了对文件进行哈希处理,是否还有其他方法满足这样的需求?
我的当前Java代码类似于在我的Mac上运行
通常,我会使用像SHA-1或MD5这样的哈希函数。问题在于我想要识别的文件的大小。这些文件通常在5-15 GB之间。
我的SHA-1哈希方法不是一个好的解决方案。对这么大的文件进行哈希处理需要几分钟时间... 我需要更快的方法,在几秒钟内就能识别之前扫描过的文件。
除了对文件进行哈希处理,是否还有其他方法满足这样的需求?
我的当前Java代码类似于在我的Mac上运行
openssl sha1 <path>
:MessageDigest md = MessageDigest.getInstance("SHA1");
FileInputStream fis = new FileInputStream(f.getPath());
byte[] dataBytes = new byte[1024];
int nread = 0;
while ((nread = fis.read(dataBytes)) != -1) {
md.update(dataBytes, 0, nread);
};
fis.close();
byte[] mdbytes = md.digest();
//convert the byte to hex format
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < mdbytes.length; i++) {
sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
但实际上我正在寻求除此之外的其他哈希算法。你有什么想法吗?:-)
敬礼 m4xy