web-dev-qa-db-ja.com

SHA 3ハッシュイン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では表示されません。また、このSunのSHA-3がCryptoJSのSHA-3と同じかどうかもわかりません。

誰でもいくつかの例を提供できますか?

25
gye

一般的なJava暗号化および暗号化サポートのリファレンス実装はおそらく BouncyCastle です。持ち込むには大きなライブラリになる可能性があるため、Sun.securityに頻繁にアクセスします。 (正しいか間違っています。)

とにかく、 BouncyCastleorg.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3

29
user1531971

@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ビットまたは16進数で64バイト):

SHA3​​-512 = e9a4fd120d684537d57f314d51213ce5acef8ff6974e2b7599674ef0f0a3cf111f0d26ed602db946739da448210fb76a7621d7a8f07728372b10a975f36d8e37

この結果と比較できます: https://duckduckgo.com/?q=sha3+%22Hello+world+!%22&ia=answer

20
Guillaume Husta

javaでの実装を見ることができます

sha3の例

2
pratik deshai