我正在编写一个需要计算 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/