登录
首页 > 文章列表 > 哈希详解:加密货币核心技术

更新时间:2025-06-18 21:15:02 编辑:丁丁小编
来源:点击查看

简介

什么是哈希?

哈希是一种将任意长度的输入数据转换为固定长度输出的过程。这个过程通过称为哈希函数的数学公式来实现。哈希函数可以是常规的,也可以是加密的,而加密哈希函数是加密货币的核心,因为它们帮助区块链和其他分布式系统实现了高度的数据完整性和安全性。

无论是常规还是加密哈希函数,都是确定性的,这意味着只要输入不变,哈希算法就会始终产生相同的输出(也称为摘要或哈希)。

加密货币的哈希算法通常设计为单向函数,意味着它们不能轻易地逆转,除非投入大量的计算时间和资源。换句话说,从输入生成输出很容易,但从输出反推输入则相当困难。一般来说,找到输入越困难,哈希算法被认为越安全。

哈希函数的工作原理

不同的哈希函数会产生不同大小的输出,但每个哈希算法的可能输出大小总是恒定的。例如,SHA-256算法只能产生256位的输出,而SHA-1总是生成160位的摘要。

让我们以“Binance”和“binance”这两个词为例,通过SHA-256哈希算法(比特币使用的算法)进行说明。

SHA-256
输入输出(256位)
Binancef1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191
binance59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

请注意,仅仅是首字母大小写的微小变化就导致了完全不同的哈希值。但由于我们使用的是SHA-256,无论输入大小如何,输出总是固定为256位(或64个字符)。而且,无论我们运行这两个词多少次,两个输出都将保持不变。

相反,如果我们通过SHA-1哈希算法运行相同的输入,结果将如下:

SHA-1
输入输出(160位)
Binance7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1
binancee58605c14a76ff98679322cca0eae7b3c4e08936

值得注意的是,SHA代表安全哈希算法。它是一组包括SHA-0和SHA-1算法以及SHA-2和SHA-3组的加密哈希函数。SHA-256是SHA-2组的一部分,连同SHA-512和其他变体。目前,只有SHA-2和SHA-3组被认为是安全的。

为什么哈希函数重要?

常规哈希函数有广泛的用途,包括数据库查找、大文件分析和数据管理。另一方面,加密哈希函数广泛用于信息安全应用,如消息认证和数字指纹。对于比特币,加密哈希函数是挖矿过程的重要组成部分,也在生成新地址和密钥中起作用。

哈希的真正威力在于处理庞大的信息量。例如,可以通过哈希函数运行一个大文件或数据集,然后使用其输出快速验证数据的准确性和完整性。这是因为哈希函数的确定性性质:输入总是会生成一个简化、压缩的输出(哈希)。这种技术消除了存储和“记住”大量数据的需要。

在区块链技术的背景下,哈希特别有用。比特币区块链涉及许多哈希操作,其中大多数是在挖矿过程中进行的。实际上,几乎所有加密货币协议都依赖于哈希来连接和压缩一组交易成区块,并在每个区块之间产生加密链接,从而有效地创建了一个区块链。

加密哈希函数

再次说明,采用加密技术的哈希函数可以定义为加密哈希函数。一般来说,破解加密哈希函数需要大量的蛮力尝试。要“逆转”加密哈希函数,一个人需要通过反复试错来猜测输入是什么,直到产生相应的输出。然而,也有不同的输入产生完全相同的输出的可能性,在这种情况下会发生“碰撞”。

技术上,加密哈希函数需要遵循三个特性才能被认为是有效安全的。我们可以将这些特性描述为碰撞抗性、原像抗性和第二原像抗性。

在讨论每个特性之前,让我们用三句话总结它们的逻辑。

碰撞抗性

如前所述,碰撞发生在不同的输入产生完全相同的哈希时。因此,一个哈希函数在有人找到碰撞之前被认为是碰撞抗性的。请注意,对于任何哈希函数,碰撞总是存在的,因为可能的输入是无限的,而可能的输出是有限的。

换句话说,当找到碰撞的可能性如此之低,以至于需要数百万年的计算时,一个哈希函数被认为是碰撞抗性的。因此,尽管没有无碰撞的哈希函数,但有些哈希函数足够强大,被认为是抗性的(例如,SHA-256)。

在各种SHA算法中,SHA-0和SHA-1组已不再安全,因为已经找到了碰撞。目前,SHA-2和SHA-3组被认为是抗碰撞的。

原像抗性

原像抗性与单向函数的概念相关。当有人找到生成特定输出的输入的概率非常低时,哈希函数被认为是原像抗性的。

请注意,这个特性与前一个特性不同,因为攻击者试图通过查看给定的输出来猜测输入是什么。碰撞则发生在有人找到两个不同的输入生成相同输出时,但不考虑使用了哪些输入。

原像抗性对于保护数据非常有价值,因为消息的简单哈希可以证明其真实性,而无需披露信息。在实践中,许多服务提供商和网络应用存储和使用从密码生成的哈希,而不是明文密码。

第二原像抗性

简而言之,我们可以说第二原像抗性介于其他两个特性之间。第二原像攻击发生在某人能够找到一个特定的输入,生成另一个已知输入的相同输出时。

换句话说,第二原像攻击涉及寻找碰撞,但不是寻找两个随机输入生成相同的哈希,而是寻找一个输入生成另一个特定输入生成的相同哈希。

因此,任何抗碰撞的哈希函数也抗第二原像攻击,因为后者总是意味着碰撞。然而,人们仍然可以对抗碰撞函数进行原像攻击,因为这意味着从单一输出找到单一输入。

挖矿

比特币挖矿涉及许多使用哈希函数的步骤,如检查余额、连接交易输入和输出,以及在区块内哈希交易以形成Merkle树。但比特币区块链安全的一个主要原因是矿工需要进行大量的哈希操作,以最终找到下一个区块的有效解决方案。

具体来说,矿工在为他们的候选区块创建哈希值时,必须尝试不同的输入。本质上,只有当他们生成以一定数量的零开始的输出哈希时,他们才能验证他们的区块。零的数量决定了挖矿难度,并且根据投入网络的哈希率而变化。

在这种情况下,哈希率代表投入比特币挖矿的计算能力。如果网络的哈希率增加,比特币协议将自动调整挖矿难度,以使挖矿一个区块所需的平均时间保持在10分钟左右。相反,如果许多矿工决定停止挖矿,导致哈希率显著下降,挖矿难度将被调整,使挖矿变得更容易(直到平均区块时间恢复到10分钟)。

请注意,矿工不需要找到碰撞,因为他们可以生成多个有效输出(以一定数量的零开始)。因此,对于某个区块有多个可能的解决方案,矿工只需要找到其中一个——根据挖矿难度确定的阈值。

由于比特币挖矿是一项成本密集型任务,矿工没有理由欺骗系统,因为这会导致巨大的经济损失。加入区块链的矿工越多,它就变得越大越强。

结束语

毫无疑问,哈希函数是计算机科学中的重要工具,尤其是在处理大量数据时。当与加密结合时,哈希算法可以非常多样,提供安全性和认证的多种方式。因此,加密哈希函数对于几乎所有加密货币网络都至关重要,因此了解它们的特性和工作机制对任何对区块链技术感兴趣的人都非常有帮助。

热门文章