Java SHA 哈希

10 Sept 2024 | 5 分钟阅读

在本节中,我们将学习什么是SHA 哈希,它在 Java 编程语言中的何处以及如何使用。我们将通过 Java 中的 SHA 哈希示例来深入了解 SHA 哈希在 Java 编程语言中的用法。

什么是 SHA 哈希?

安全哈希算法”广泛称为 SHA。安全哈希算法是一种加密哈希函数。加密哈希函数是一种算法,它不带特定原因随机接受数据作为输入,并以称为“哈希值”的编码形式产生文本输出。编码文本将被存储,而不是用于验证用户的密码,并且此加密文本用于验证用户而不是密码。与所有其他加密哈希函数一样,SHA 也是一种不可逆函数。SHA 可用于通过输入最多 20 字节的文本来创建文本签名。安全哈希函数将其输出返回一个 40 位十六进制哈希值。即使输入发生最小的更改,也会导致编码的文本输出发生很大的不同。这种现象称为雪崩效应。雪崩效应有助于保护用户数据免受攻击者侵害,因为它使解密代码变得困难。

SHA 的类型

安全哈希算法有几种不同的形式。下面提到了 SHA 的以下形式

  1. SHA-1
  2. SHA-2
  3. SHA-256
  4. SHA-512
  5. SHA-224
  6. SHA-384

在编程世界中,还有许多其他形式的 SHA 被使用,但实际上只有两种类型的 SHA,即 SHA-1 和 SHA-2。SHA 的其他形式只是 SHA-2 的版本,它们在对文本进行加密时会记录 SHA-2 的不同比特长度。SHA-1 曾是安全哈希算法的原始形式,因为它会生成 160 位的消息摘要作为输出。由于 SHA-1 过去会将相同的摘要值赋给两个不同的值,因此使用 160 位产生的组合数量很少。这使得 SHA-1 很容易被攻击者进行暴力破解,并可以轻松破解。由于 SHA-1 的这种失败,引入了一种新的安全哈希算法“SHA-2”。它会生成从 256 到 512 的各种比特长度,并为每个消息摘要分配一个唯一值。

下一代哈希

目前,SHA-2 已在工业级中用于安全哈希算法。SHA-1 和 SHA-2 的创建者也发布了 SHA-3。美国组织“NIST”是安全哈希算法 SHA-1、SHA-2 和 SHA-3 的创建者和发布者。SHA-3 的软件比早期版本的 SHA 慢得多,但与 SHA-1 和 SHA-2 相比,SHA-3 的硬件速度更快。尽管 SHA-3 于 2015 年发布,但尚未成为工业级,但我们很可能会在未来看到 SHA-3 的发展。

Java 中 SHA 的用法

安全哈希算法用于数字签名及其相关证书,以通过 SSL 和 TSL 加密协议等显式或隐式连接在 Web 服务器及其客户端之间建立安全连接。各种应用程序也利用 SHA。它们是

  1. 安全 Shell 协议 (SSH) 应用程序。
  2. 安全多用途互联网邮件扩展 (S-MIME)
  3. 入侵预防系统 (IPS)

SHA 还用于哈希 Web 服务器的密码,以便服务器只需要记住哈希值。哈希密码的技术可以防止攻击者直接访问纯文本密码,因为他/她只能查看存储在数据库中的哈希值。因此,如上所述,我们使用安全哈希算法来保护各种应用程序、Web 服务器和文件免受攻击者侵害。

在 Java 中实现 SHA

要开始在 Java 中使用 SHA,必须将“java.security”包导入到程序中。在将上述包导入 Java 程序后,Java 中使用“MessageDigest”类来计算加密哈希函数的值。安全哈希算法始终在一个名为“getInstance()”的静态方法中进行初始化。初始化后,必须选择一个首选的 SHA 形式来计算消息摘要。结果在计算消息摘要后返回一个字节数组值。使用“BigInteger”类将字节数组转换为其符号形式。最后,将符号形式转换为十六进制格式,这就是我们所需的哈希值,即消息摘要。

SHA 哈希 Java 程序

ShaExample.java

输出

This is the message digest for the plain text:

Hey human : 754697281d62ffac5ce4427a460264d0115cf8ee16d40c12b78b0df9b12ee241

This is hashing : 701236e5f9fc7fb98ad1bafd2747ce7f9ca01a800afefdbd2b5de815a19c1630

tut12kf4 : fcef32b24015f0297781ea8034dbcbb6a7800e46f2cf7366526e4867a10092aa

在上面的示例程序中,我们使用了 SHA-256 算法来哈希给定的纯文本。SHA-256 是 SHA-2 算法的一个版本。我们可以在输出中看到输入纯文本的哈希码。

结论

在本文中,我们详细了解了 SHA 哈希。我们了解了 SHA 的不同形式及其在技术行业中的用途。此外,我们还讨论了 SHA 哈希的未来以及 SHA 哈希在行业级别的实现。