Calculating SHA 3 Hash In Java


Answer :

The common Java reference implementation for crypto and crypto support is probably BouncyCastle. It can be a big library to bring in, which is why we often reach into sun.security (rightly or wrongly.)

Anyway, BouncyCastle seems to offer org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3


Thanks to @jdv for his answer. I'm adding more information to have a quick start and an example.

First, add the BouncyCastle maven dependency, or get it on Maven Central :

    <dependency>         <groupId>org.bouncycastle</groupId>         <artifactId>bcpkix-jdk15on</artifactId>         <version>1.56</version>     </dependency> 

Then we can test it :

import org.bouncycastle.jcajce.provider.digest.SHA3; import org.bouncycastle.util.encoders.Hex; import org.junit.Test;  @Test public void testSha3() throws Exception {     String input = "Hello world !";     SHA3.DigestSHA3 digestSHA3 = new SHA3.Digest512();     byte[] digest = digestSHA3.digest(input.getBytes());      System.out.println("SHA3-512 = " + Hex.toHexString(digest)); } 

You'll get this result (512 bits or 64 bytes in hexadecimal) :

SHA3-512 = e9a4fd120d684537d57f314d51213ce5acef8ff6974e2b7599674ef0f0a3cf111f0d26ed602db946739da448210fb76a7621d7a8f07728372b10a975f36d8e37

You can compare it with this result : https://duckduckgo.com/?q=sha3+%22Hello+world+!%22&ia=answer


Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable