Вычисление SHA 3 Hash в Java

Я использовал библиотеку CryptoJS (т.е. CryptoJS.algo.SHA3.creat()) для хэша SHA-3 на передней панели. (см. http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha3.js)

Мне было интересно, есть ли эквивалентность библиотеки Java? Но пока я их не нашел. Не так много примеров Java SHA-3.

sun.security.Provider имеет SHA-3, но он не отображается под Eclipse. Кроме того, я не уверен, что это солнце SHA-3 такое же, как у CryptoJS SHA-3.

Может ли кто-нибудь указать несколько примеров?

Ответы

Ответ 1

Общая ссылочная реализация Java для криптографической и криптовальной поддержки - это, вероятно, BouncyCastle. Это может быть большая библиотека, чтобы привлечь, поэтому мы часто достигаем sun.security (правильно или неправильно).

Во всяком случае, BouncyCastle, кажется, предлагает org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3

Ответ 2

Спасибо @jdv за его ответ. Я добавляю больше информации, чтобы быстро начать и пример.

Во-первых, добавьте зависимость BouncyCastle maven или получите ее на Maven Central:

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

Затем мы можем проверить это:

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

Вы получите этот результат (512 бит или 64 байта в шестнадцатеричном виде):

SHA3-512 = e9a4fd120d684537d57f314d51213ce5acef8ff6974e2b7599674ef0f0a3cf111f0d26ed602db946739da448210fb76a7621d7a8f07728372b10a975f36d8e37

Вы можете сравнить его с этим результатом: https://duckduckgo.com/?q=sha3+%22Hello+world+!%22

Ответ 3

вы можете увидеть реализацию в Java

пример sha3