java - Java 中的最大 SHA-1 哈希性能技巧

标签 java performance algorithm hash sha1

我正在编写一个需要计算 SHA-1 哈希值的 Java 库。在一项常见任务中,JVM 大约 70% 的时间用于 sun.security.provider.SHA.implCompress,10% 用于 java.util.zip.Inflater.inflate,以及 sun.security.provider.ByteArrayAccess.b2iBig64 中的 2%。 (根据 NetBeans 分析器。)

我似乎无法正确使用 Google 搜索关键字来获得相关结果。我对 SHA-1 哈希算法不是很熟悉。如何从 SHA-1 MessageDigest 中获得最大性能?是否有我应该消化的特定 block 大小,或者我应该尝试的特定大小的倍数?

回答一些您想问的问题:

  • 是的,我在阅读文件 (MessageDigest.update) 时正在消化,因此字节只消化一次。
  • SHA-1 摘要被用作校验和,通常用于需要 zlib/inflated 的文件。
  • 不,我不能使用不同的哈希值。
  • 是的,我知道 zlib 已经使用校验和,但外部要求指定在此之上使用 SHA-1 哈希。我想不出一个很好的理由(如果可以的话 +1):-)

最佳答案

也许您可以调用用 C 编写的 native 代码。一定有大量 super 优化的 SHA1 库可用。

关于java - Java 中的最大 SHA-1 哈希性能技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9710305/

相关文章:

java - 如何打乱列表?

java - 如何在Android中渲染YV12视频帧

java - 如何使用 charAt 方法将大写字母转换为小写字母?

java - Hibernate 在两个字段上的单向映射

database - 如何提高键入时搜索的性能?

python - 两组区间之差

Java 图形用户界面 : about getContentPane( ) method and content

c# - 网络性能问题

python - Sympysolve不会返回答案

c# - 找到所有 k 大小的子集,其中包含 n 大小的重复未排序正整数袋的总和 s