web-dev-qa-db-fra.com

Calcul de SHA 3 Hash in Java

J'utilise la bibliothèque CryptoJS (c'est-à-dire CryptoJS.algo.SHA3.creat()) pour le hachage SHA-3 sur le frontal. (voir http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha3.js )

Je me demandais s'il y avait des Java équivalence de bibliothèque? Mais pour l'instant je n'en ai pas trouvé. Il n'y en a pas autant Java SHA-3 exemples .

Sun.security.Provider a SHA-3, mais il n'est pas visible sous Eclipse. De plus, je ne suis pas sûr que le SHA-3 de ce Sun soit le même que le SHA-3 de CryptoJS.

Quelqu'un pourrait-il donner des exemples?

25
gye

L'implémentation de référence commune Java Java pour la prise en charge de la cryptographie et de la cryptographie est probablement BouncyCastle . Il peut s'agir d'une grande bibliothèque à apporter, c'est pourquoi nous avons souvent recours à Sun.security (à tort ou à raison.)

Quoi qu'il en soit, BouncyCastle semble offrir org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3

29
user1531971

Merci à @jdv pour sa réponse. J'ajoute plus d'informations pour avoir un démarrage rapide et un exemple.

Tout d'abord, ajoutez la dépendance maven de BouncyCastle, ou activez-la Maven Central :

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

Ensuite, nous pouvons le tester:

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));
}

Vous obtiendrez ce résultat (512 bits ou 64 octets en hexadécimal):

SHA3-512 = e9a4fd120d684537d57f314d51213ce5acef8ff6974e2b7599674ef0f0a3cf111f0d26ed602db946739da448210fb76a7621d7a8f07728372b10a975f36d8e37

Vous pouvez le comparer avec ce résultat: https://duckduckgo.com/?q=sha3+%22Hello+world+!%22&ia=answer

20
Guillaume Husta

vous pouvez voir la mise en œuvre en Java

exemple sha

2
pratik deshai