如何计算文件的SHA512?

Ste*_*eve 1 java hash groovy sha512

我有一个文件,我需要计算它的 SHA512 值。我发现很多网站都提供为我做这件事,但我想用 Java 以编程方式来做(好吧,Groovy,但它是一样的)。

对于那些好奇的人,我正在运行 Oracle 的 TZUpdater 工具并将其指向本地文件。这需要一个包含该文件的 SHA512 值的文件。 http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html

mzc*_*mzc 5

您可以使用以下代码段计算文件的 SHA-512 摘要:

MessageDigest.getInstance("SHA-512").digest(Files.readAllBytes(Paths.get("/path/file.txt")))
Run Code Online (Sandbox Code Playgroud)

要使此代码工作,您将需要 JDK7 或更高版本。

注意:如果文件太大而无法放入内存,您可能应该按照建议使用 Guava。


Lou*_*man 5

如果第三方库是公平的游戏,GuavaFiles.hash可以使这变得如此简单

Files.hash(new File(fileName), Hashing.sha512()).toString();
Run Code Online (Sandbox Code Playgroud)

...这也可能更有效;如果文件很大,则不需要像在Files.readAllBytes解决方案中那样一次性存储在内存中。这也会以十六进制输出正确的哈希值;如果您需要以字节为单位,只需使用asBytes()而不是toString().