什么是较便宜的哈希算法?

Seb*_*ber 3 java encryption hash

我对哈希算法知之甚少.

我需要在将文件转发到远程系统(有点像S3)之前用Java计算传入文件的哈希,这需要MD2/MD5/SHA-X中的文件哈希.出于安全原因,不会计算此哈希,而只是为了一致性校验和.

我可以使用Java标准库的DigestInputStream在转发文件时实时计算此哈希值,但是想知道最好使用哪种算法来避免使用DigestInputStream的性能问题?

我的一位前同事测试并告诉我们,与unix命令行或文件相比,计算hash实时可能非常昂贵.


关于过早优化的编辑: 我在一家公司工作,目的是帮助其他公司取消他们的文件.这意味着我们有一个处理来自其他公司的文件传输的批次.我们将来每天定位数百万份文档,实际上,此批次的执行时间对我们的业务非常敏感.

每天100万份文档的散列优化10毫秒是每天执行时间缩短3小时,这是非常巨大的.

Ste*_*n C 5

如果您只是想在传输过程中检测意外损坏等,那么一个简单的(非加密)校验和应该就足够了.但请注意(例如)16位校验和将无法在2 16中检测到一次随机损坏.并且它无法防止有人故意修改数据.

Checksums上的Wikipedia页面列出了各种选项,包括Adler-32和CRC等常用(和便宜)的选项.

但是,我同意@ppeterka.这种气味"过早优化".