28

我一直在使用 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 相同。

谁能提供一些例子?

4

3 回答 3

30

加密和加密支持的常见 Java 参考实现可能是BouncyCastle。它可以是一个大图书馆,这就是为什么我们经常接触到 sun.security(正确或错误)。

无论如何,BouncyCastle似乎提供org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3

于 2015-05-07T19:48:12.457 回答
24

感谢@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 = e9a4fd120d684537d57f314d51213ce5acef8ff6974e2b7599674ef0f0a3cf111f0d26ed602db946739da448210fb76a7621d7a8f07728372b10a975f36d8e3

您可以将其与此结果进行比较:https ://duckduckgo.com/?q=sha3+%22Hello+world+!%22&ia=answer

于 2017-03-30T09:11:58.817 回答
1

你可以看到Java中的实现

sha3 示例

于 2015-08-17T08:09:54.593 回答