Java SHA

2024 年 9 月 10 日 | 阅读 3 分钟

SHA 是 **安全散列算法** 的缩写。在 Java 中,SHA 是最流行的 **加密散列函数** 之一。加密散列可以用于创建文本签名或数据文件。现在,SHA 是一种加密散列函数,它接受最多 20 字节的输入,并返回一个大约 40 位长的十六进制散列值。SHA-256 算法能够生成几乎唯一、非静态的 256 位(即 32 字节)散列值。但需要记住的是,这个函数是单向函数,即它产生的 [结果](https://www.tpoint.in/interview-questions/result) 无法解密回其原始值。

现在,SHA-2 之后的最新安全散列标准是 SHA-3,与 SHA-2 相比,它提供了一种独特的方式来生成唯一的单向散列,并且在某些硬件实现上可能更快。SHA3-256 算法在 SHA-3 中具有固定的 256 位算法长度,就像 SHA-256 一样。

为了实现 SHA-256 算法,Java 提供了 **MessageDigest** 类。

Message Digest 类

**MessageDigest** 类在 Java 中用于计算加密散列值的 [哈希](https://www.tpoint.in/interview-questions/hash) 值。
它包含在 java.security 包中。

MessageDigest 类提供的用于获取文本散列值的加密散列函数如下:

  1. SHA-1
  2. MD5
  3. SHA-256

这些算法通过名为 `getInstance()` 的静态方法开始。选择算法后,将计算散列值,并返回字节数组结果。

结果字节数组使用 'BigInteger' 类转换为其符号幅度表示。然后,将该表示转换为十六进制格式以获得 'MessageDigest'。

示例

输入: EncryptingThis

输出: 8a69cbe118a9333180b16ebbcf2430ef69cee5b72c54b10a5bc11d8445cc657a

输入: Just An Example

输出: 284cdc2bb78a70e5661bb5214534593fad996635e7f0554d885c1c27dafac9a2

让我们用 Java 程序实现 SHA-256 算法。

JavaSha.java

输出

HashCode Generated by SHA - 256 for : 
JavaTPoint : 2a6b5683a73648f11785ace4e8a25ac45ef87d3ef33781b26a03fb9bfaac708a
HashFunc : 5aca749b645d076d05c74d92728155bc3c306f5790bfec019694e45e4fa0bff3