Calculating SHA 3 Hash in Java

前端 未结 3 1034
野的像风
野的像风 2021-02-02 09:21

I have been using CryptoJS (i.e. CryptoJS.algo.SHA3.creat()) library to SHA-3 hash on the front end. (see http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollu

相关标签:
3条回答
  • 2021-02-02 10:17

    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

    0 讨论(0)
  • 2021-02-02 10:25

    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

    0 讨论(0)
  • 2021-02-02 10:26

    you can see Implementation in Java

    sha3 example

    0 讨论(0)
提交回复
热议问题