加密哈希:初学者指南

加密哈希一直是网络安全范围内不可或缺的一部分。事实上,它被广泛用于不同的技术,包括比特币和其他加密货币协议。

在本文中,我们将介绍加密货币中的散列,我们将了解加密散列、它们的示例、历史等。

这篇文章面向那些想要了解更多关于该主题的技术观点的人。但是,如果您不是技术人员,请不要害怕,因为我们会尽量以最佳方式简化概念。

密码学一直是计算机科学的核心。没有它,我们将永远无法进行安全的通信或信息共享。最好将其定义为保护信息的方法。

哈希是如何工作的?

加密哈希

为了更好地理解散列,我们还需要了解它是如何工作的。散列是一种数学运算,需要较少的计算能力来执行。然而,逆向所需的计算能力是昂贵的,因此不能由当前一代的计算机来完成。

然而,量子计算机可以逆转计算机散列。但是,已经有一些抗量子的散列方法。

出于散列目的,使用了很多算法。这包括以下内容。

  • 消息直通 (MD5)
  • 安全散列函数 (SHA1)
  • 安全散列函数 (SHA-256)

并非所有散列函数都是 100% 安全的。例如,SHA1 很容易破解,因此不建议用于实际用途。最常用的散列函数之一包括 MD5 和 SHA-256。

MD5 主要用于验证下载的文件。因此,如果您下载文件,则可以使用校验和计算器计算其校验和。如果哈希字符串与下载器提供的字符串匹配,则意味着下载正确完成,没有任何文件损坏。简而言之,它验证文件的完整性。

 

散列主要用在哪里?

散列主要用于密码。让我们举个例子来理解它。

创建电子邮件帐户时,您的电子邮件提供商会询问您的电子邮件地址和密码。显然,他们不会以简单的纯文本形式保存电子邮件和密码。如果他们这样做了,那么他们就是在损害您信息的隐私和安全。为了确保难以破译该信息,他们对您的密码使用哈希函数,这样即使是在电子邮件提供商内部工作的任何人也无法破译它。

因此,如果您下次尝试登录,哈希函数会对其进行解密并匹配保存的内容,从而授予您访问电子邮件的权限。

其他用途包括签名生成和验证以及文件完整性检查。

当然,还有其他散列应用程序。哈希的另一个最流行的用法是加密货币,我们将在下面讨论。

 

如何在加密货币中使用散列

散列主要用于加密货币中用于挖掘目的。因此,在比特币中,挖矿是一个验证 SHA-256 哈希函数的过程。这意味着散列可用于编写新事务,将它们引用回前一个块,并为它们加上时间戳

据说当将新块添加到区块链时,网络会达成共识。通过这样做,它验证了块中包含的交易。此外,添加使任何人都无法扭转它。由于散列,所有这些都是可能的,这就是它用于维护区块链完整性的原因。

比特币使用工作量证明共识方法,反过来使用 SHA-256 单向哈希函数。

 

散列函数示例

现在,让我们看一个加密哈希函数的例子。

为了让我们和您更轻松,我们将使用在线可用的 SHA-256 工具。

这是它的链接:SHA256 Online

现在,如果您输入 101Blockchains 作为输入,它将给出以下输出。

输入:101Blockchains.com

输出:fbffd63a60374a31aa9811cbc80b577e23925a5874e86a17f712bab874f33ac9

密码散列

使用 SHA256 哈希函数

现在,如果您输入一个简单的“Hello World”作为输入,它将给出以下输出。

输入:你好世界

输出:a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

在这两个输出中,您会看到两个输出值的长度相同,即 256 位,即 64 个字符的长度。

现在,让我们在输入中输入 101blockchain。请注意,我们从 101Blockchains 中删除了用于生成第一个哈希的“s”。

输入:101区块链

输出:c4d67db72f3d18eaca2e8e8498271de353d25874e4448be4887f2563576c6fe8

如果您将它与我们的第一个哈希输出进行比较,那么即使我们只从输入中删除一个字母,您也会看到巨大的差异。

那么,我们从这个例子中学到了什么?下面我们来总结一下。

  • 所有输出的长度相同
  • 输入的微小变化会导致完全不同的输出
  • 不可能将输出反转为输入。

密码散列函数的性质

为了更好地理解密码散列或一般的散列,让我们来看看密码散列函数的属性。

确定性

众所周知,加密散列函数是确定性的。这意味着对于给定的输入,输出将是相同的。更简单地说,如果您将相同的输入通过哈希函数进行一百次,则输出在所有情况下都是相同的。

确定性属性很重要,因为它支持单向函数的概念。如果它不能那样工作,那么就不可能将它用于散列信息。此外,相同输入的随机输出会使整个过程变得毫无用处。

 

预图像抗性

加密散列函数是抗图像前的,这意味着一旦生成的散列值不会透露任何关于输入的信息。

这是一个重要的功能,因为它提供了非常重要的功能。

 

计算效率高

哈希函数在计算上是高效的。这意味着无论输入有多长和多复杂,它都会快速生成哈希输出。对于想要使用散列函数来存储敏感信息的服务,这种效率是受欢迎的。然而,它只有一种计算效率,即从输入到输出。由于它是不可逆的,因此任何计算机都不可能对其进行逆向工程。

但是,如果您想谈论数字,任何现代计算机都可能需要数年时间才能从给定的哈希值中猜测输入。此外,随着现代计算机功能日益强大,散列函数变得比以往任何时候都更加高效。

 

无法逆向工程

哈希函数不能反转。这意味着它是安全的。如您所知,加密哈希函数是在不可逆函数的前提下创建的。用于创建输出的数学方程和过程被简化并且不能颠倒。从技术上讲,哈希函数不支持逆运算。

 

防撞

碰撞阻力是我们要讨论的最后一个属性。此属性确保没有两个不同的输入产生相同的输出。

正如您现在应该知道的,输入可以是任意长度。根据这个定义,输入可以是无限的。现在,输出是固定长度的,每次都需要不同。固定长度的限制也意味着输出是有限的数字——即使有限的数字具有巨大的价值。这对分离每个输入的输出提出了数学挑战。

好消息是大多数流行的散列函数都是抗碰撞的。

 

流行的哈希类——哈希算法列表

这将我们引向下一部分,我们将在其中讨论流行的哈希类。我们将列出三个在密码学领域非常流行的哈希类。

  • 消息摘要 (MD)
  • 安全散列函数 (SHF)
  • RIPE 消息直通 (R​​IPEMD)

让我们一一介绍。

消息文摘(MD)

消息摘要是整个互联网历史中使用的一系列哈希函数。

该系列由 MD2、MD4、MD6 和最流行的 MD5 等哈希函数组成。所有 MD 散列函数都是 128 位散列函数,这意味着摘要大小为 128 位。

正如我们前面所讨论的,软件提供商使用 MD5 摘要散列函数来检查用户通过文件服务器下载的文件的完整性。为了使其正常工作,提供程序允许下载程序访问文件的 MD5 校验和。为了检查文件的完整性,使用 MD5 校验和计算校验和,然后与提供的哈希值进行交叉检查。如果该值不同于所述文件的完整性检查失败,则用户需要下载整个文件或部分文件。

MD5 不如其他散列函数安全。2004 年,对哈希函数进行了一次分析攻击,只用了一个小时就完成了。它是使用计算机集群完成的。这使得 MD 在保护信息方面不太有用,因此用于验证文件完整性等任务。

 

安全哈希函数 (SHA)

安全散列函数是另一个非常流行的散列函数系列。它由美国国家标准与技术研究院 (NIST) 开发和发布。他们发布了四个版本的 SHA,包括 SHA-0、SHA-1、SHA-2 和 SHA-3。

正如您应该猜到的,新版本纠正了旧版本 SHA 的一些问题或弱点。例如,SHA-1 是在发现 SHA-0 漏洞后发布的。SHA-1 于 1995 年发布。

SHA-1 一经发布便有了自己的名字。当时它被各种应用程序使用,包括安全套接字层 (SSL)。

然而,随着时间的推移,利用者也发现了 SHA-1 冲突,这使得它变得无用。NIST 提出了他们的 SHA-2 系列安全哈希函数,它采用了四种 SHA 变体,包括 SHA-256、SHA-224、SHA-512 和 SHA-384。在这四个变体中,两个是核心,包括 SHA-256 和 SHA-512。它们之间的区别在于 SHA-512 使用 64 字节的字,而 SHA-256 只使用 32 字节的字。

SHA-2 系列哈希函数仍然被广泛使用。然而,也有非 NSA 设计者在 2012 年的公开比赛中设计和发布的 SHA-3。它之前被称为 Keccak。Keccak 的好处包括更好的抗攻击性和高效的性能。

 

RIPE 消息直通 (R​​IPEMD)

RIPE Message Direct (RIPEMD) 是 1992 年发布的一系列哈希函数。此外,RIPE 代表 RACE Integrity Primitives Evaluations。

它由开放研究社区设计和管理。家族中,有RIPEMD、RIPEMD-160、RIPEMD-128、RIPEMD-320、RIPEMD-256五种功能。但是,最常用的功能是 RIPEMD-160。

RIPEMD 的设计基于 Message Direct。

 

散列、加密和加盐之间的区别

在本节中,我们将简要介绍哈希、加密和加盐之间的区别。

让我们开始加密。

加密是使用公钥对原始信息进行加扰,然后使用私钥对其进行解锁的过程。这是一个双向功能。

另一方面,散列是一种单向函数,用于对信息进行加扰以进行验证。

最后一个词是“腌制”。

加盐类似于散列,但这里将唯一值添加到密码中以生成不同的散列值。这里的盐值需要是唯一的并且保持隐藏。

 

结论

这使我们结束了密码学中的散列。我们试图通过首先了解它所提供的内容,然后快速了解它的工作原理、它的类型等等来理解散列输入和输出!

如您所见,散列有很多用例,包括加密货币、密码保护、签名验证等。尽管散列以自己的方式是独一无二的,但由于世界各地强大的计算机,它在保护信息方面的有效性每天都在下降。

研究人员还致力于通过发布更强大的哈希函数来维持现状,该函数具有量子抗性,可以承受全球计算能力的发展。

发表回复

后才能评论