Java SHA 哈希10 Sept 2024 | 5 分钟阅读 在本节中,我们将学习什么是SHA 哈希,它在 Java 编程语言中的何处以及如何使用。我们将通过 Java 中的 SHA 哈希示例来深入了解 SHA 哈希在 Java 编程语言中的用法。 什么是 SHA 哈希?“安全哈希算法”广泛称为 SHA。安全哈希算法是一种加密哈希函数。加密哈希函数是一种算法,它不带特定原因随机接受数据作为输入,并以称为“哈希值”的编码形式产生文本输出。编码文本将被存储,而不是用于验证用户的密码,并且此加密文本用于验证用户而不是密码。与所有其他加密哈希函数一样,SHA 也是一种不可逆函数。SHA 可用于通过输入最多 20 字节的文本来创建文本签名。安全哈希函数将其输出返回一个 40 位十六进制哈希值。即使输入发生最小的更改,也会导致编码的文本输出发生很大的不同。这种现象称为雪崩效应。雪崩效应有助于保护用户数据免受攻击者侵害,因为它使解密代码变得困难。 SHA 的类型安全哈希算法有几种不同的形式。下面提到了 SHA 的以下形式
在编程世界中,还有许多其他形式的 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。它们是
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 哈希在行业级别的实现。 下一主题如何制作 Java 项目 |
在 Java 中,交换或替换对象可以通过将一个对象的值赋给另一个对象并反之来实现。可以通过使用临时变量来保存一个对象的值,同时将其与另一个对象的值交换来实现...
5 分钟阅读
克里希那穆提数是 Java 中的另一个特殊数字。如果一个数字的所有数字的阶乘之和等于该数字,则该数字称为克里希那穆提数。克里希那穆提数也称为强数。就像质数和阿姆斯特朗数一样,克里希那穆提数……
阅读 3 分钟
Java 中的最小成本路径问题是面试中最突出的问题之一。在此问题中,提供了一个矩阵(costMatrix[][]),它表示 costMatrix[][] 中每个单元格的成本。任务是转...
11 分钟阅读
目前,Java 被许多科技巨头广泛使用。科技巨头定期聘请 Java 开发人员以满足市场需求。作为回报,公司提供丰厚的薪资待遇和诱人的福利。在本节中,我们将讨论角色...
阅读 6 分钟
Java 编程语言于 20 世纪 90 年代初由 Sun Microsystem 开发。Java 是一种面向对象、简单、高效、健壮的通用编程语言。它主要用于基于 Web 的企业应用程序。最初它被设计用于在不同平台上运行的嵌入式网络应用程序。当我们...
阅读 3 分钟
在 Java 中,Singleton 类是一种控制对象创建的类。这意味着单例类允许我们在同一时间创建一个类的单个对象。它通常用于控制对资源(如数据库连接或套接字)的访问。它……
阅读 3 分钟
在 Java 编程领域,与数据库交互是构建健壮且可扩展应用程序不可或缺的一部分。为了方便数据库操作,Java 提供了两个包:java.sql 和 javax.sql。虽然这两个包都用于提供数据库访问,但它们在...上有所不同。
7 分钟阅读
Java 中的 BreakIterator ious() 方法及示例 java.text.BreakIterator 类包含一个 ious() 方法。通过调用 current() 方法可以获得当前边界,而使用 BreakIterator 类可以获得其后面 ious 边界的索引。它给出了第一个...的偏移量。
阅读 3 分钟
许多与字符串相关的挑战中一个令人着迷的难题是查找和计数满足特定要求的子字符串。查找和计数至少包含一个元音和一个辅音的所有子字符串就是这样一个任务。这个问题说明了多种算法技术,从暴力方法...
阅读 8 分钟
在本节中,我们将学习 Java 中的星形数。星形数类似于中国跳棋的棋盘。星形数是六角星。这里,六角星表示一个六角形。观察以下图表。在数学上,该数字表示为 Sn...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India