计算 Java 中的 SHA 3 哈希
Calculating SHA 3 Hash in 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 相同。
谁能提供一些例子?
加密和加密支持的常见 Java 参考实现可能是 BouncyCastle。它可以是一个大图书馆,这就是为什么我们经常进入 sun.security(正确或错误。)
无论如何,BouncyCastle 似乎提供 org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3
您可以在 Java
中看到实现
感谢@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&ia=answer
我一直在使用 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 相同。
谁能提供一些例子?
加密和加密支持的常见 Java 参考实现可能是 BouncyCastle。它可以是一个大图书馆,这就是为什么我们经常进入 sun.security(正确或错误。)
无论如何,BouncyCastle 似乎提供 org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3
您可以在 Java
感谢@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&ia=answer