java - 什么是更便宜的哈希算法?

标签 java encryption hash

我对哈希算法了解的不多。

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

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

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


编辑过早优化: 我在一家旨在帮助其他公司将其文件非物质化的公司工作。 这意味着我们有一批处理来自其他公司的文件传输。我们的目标是 future 每天处理数百万份文档,实际上,这批文件的执行时间对我们的业务很敏感。

每天对 100 万份文档进行 10 毫秒的哈希优化,每天的执行时间减少了 3 小时,这是相当大的。

最佳答案

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

Checksums 上的维基百科页面,列出了各种选项,包括许多常用(且便宜)的选项,如 Adler-32 和 CRC。

但是,我同意@ppeterka。这有点“过早优化”的味道。

关于java - 什么是更便宜的哈希算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19157262/

相关文章:

java - 使用Zoom API共享对Zoom Meeting设置的访问权限

android - Android客户端和PHP服务器之间的加密

php openssl_decrypt() 参数(之前由 perl Crypt::CBC 加密)

java - IText 从签名 PDF 中提取原始文件并比较哈希值

android - PayUBiz-安卓 : getting Mandatory param hash is missing

Java-子集和递归 递归的画图

java - QuerySyntaxException : expecting OPEN, 在第 1 行附近找到 'DESC'

java - 这种锁定技术的名称是什么?

android - 在 android 中通过 GSM 加密语音

java - 用 Java 重写 Gimli_hash