主页 > 下载imtoken钱包app中国版 > 什么是哈希?

什么是哈希?

下载imtoken钱包app中国版 2023-11-20 05:07:54

散列是从可变大小的输入生成固定大小的输出的过程。这是通过使用称为散列函数(作为散列算法实现)的数学公式来完成的。

虽然并非所有散列函数都涉及使用加密技术,但所谓的加密散列函数是加密货币的核心。多亏了它们,区块链和其他分布式系统才能实现卓越的数据完整性和安全性。

传统和加密哈希函数都是确定性的。确定性意味着只要输入不变,散列算法将始终产生相同的输出(也称为摘要或散列)。

一般来说,加密货币的散列算法被设计为单向函数,这意味着如果没有大量的计算时间和资源,它们就无法轻易恢复。换句话说,从输入创建输出非常容易交易区块哈希值如何生成,但在相反的方向(仅从输出生成输入)相对困难。一般来说,越难找到输入,散列算法被认为越安全。

哈希函数是如何工作的?

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

为了说明这一点,让我们通过 SHA-256 哈希算法(比特币中使用的算法)运行“比特币”和“比特币”这两个词。

SHA-256

输入

输出(256 位)

区块链单向哈希算法_md5 哈希值_交易区块哈希值如何生成

比特币

b4056df6691f8dc72e56302ddad345d65fead3ead9299609a826e2344eb63aa4

比特币

6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b

请注意,微小的更改(第一个字母的大小写)可能会导致完全不同的哈希值。但由于我们使用的是 SHA-256,因此无论输入大小如何,输出都将始终具有 256 位(或 64 个字符)的固定大小。此外,无论我们在算法中运行这两个词多少次,两个输出都将保持不变。

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

SHA-1

输入

md5 哈希值_区块链单向哈希算法_交易区块哈希值如何生成

输出(160 位)

比特币

42bd6b9eeb1da01504fefe014e16415246c0f66f

比特币

ed1b8d80793e70c0608e8a8508a8dd80f6aa56f9

值得注意的是,首字母缩略词 SHA 代表 Secure Hash Algorithm。它是指一组加密哈希函数,包括 SHA-0 和 SHA-1 算法以及 SHA-2 和 SHA-3 集合。 SHA-256 与 SHA-512 和其他变体一起属于 SHA-2 组。目前,只有 SHA-2 和 SHA-3 组被认为是安全的。

为什么它们很重要?

传统的散列函数具有广泛的用例,包括数据库查找、大文件分析和数据管理。另一方面,密码散列函数广泛用于信息安全应用,例如消息认证和数字指纹识别。就比特币而言,加密哈希函数是挖矿过程的重要组成部分,并且在新地址和密钥的生成中也发挥着作用。

交易区块哈希值如何生成_md5 哈希值_区块链单向哈希算法

散列的真正威力在于处理大量信息。例如,可以通过哈希函数运行大型文件或数据集,其输出可用于快速验证数据的准确性和完整性。由于散列函数的确定性,这是可能的:输入总是会产生缩减的压缩输出(散列)。这种技术消除了存储和“记住”大量数据的需要。

哈希在区块链技术的背景下特别有用。比特币区块链有几个涉及散列的操作,其中大部分是在采矿期间。事实上,几乎所有的加密货币协议都依赖散列将交易组链接和压缩成区块,并在每个区块之间产生加密链接,从而有效地创建区块链。

加密哈希函数

同样,部署密码技术的哈希函数可以定义为密码哈希函数。一般来说,破解密码哈希函数需要无数次暴力尝试。对于“恢复”加密哈希函数的人来说,他们需要通过反复试验来猜测输入是什么,直到产生相应的输出。但是,也有可能不同的输入产生完全相同的输出,在这种情况下会发生“冲突”。

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

在讨论每个属性之前,让我们用三个简短的句子总结它们的逻辑。

防碰撞

如前所述,当不同的输入产生完全相同的哈希时,就会发生冲突。因此,在有人发现冲突之前,哈希函数被认为是抗冲突的。请注意,任何散列函数都会有冲突,因为可能的输入是无限的,而可能的输出是有限的。

md5 哈希值_区块链单向哈希算法_交易区块哈希值如何生成

换句话说交易区块哈希值如何生成,当发现碰撞的概率非常低以至于需要数百万年的计算时,哈希函数是抗碰撞的。因此,虽然没有无冲突的散列函数,但其​​中一些函数足够强大,可以被认为具有抗性(例如,SHA-256)。

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

原像抗性

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

请注意,此属性与前一个属性不同,因为攻击者将尝试通过查看给定输出来猜测输入是什么。另一方面,当有人发现两个不同的输入产生相同的输出时,就会发生冲突,但使用哪个输入并不重要。

原像抗性的特性对于保护数据很有价值,因为消息的简单哈希可以在不泄露信息的情况下证明其真实性。在实践中,许多服务提供商和 Web 应用程序存储和使用从密码生成的哈希值,而不是明文密码。

二次原像电阻

为简单起见,我们可以说第二个原像电阻介于其他两个属性之间。当某人能够找到一个特定的输入,该输入与他们已知的另一个输入产生相同的输出时,就会发生二次原像攻击。

区块链单向哈希算法_交易区块哈希值如何生成_md5 哈希值

换句话说,第二次原像攻击涉及发现冲突,但不是搜索生成相同哈希的两个随机输入,而是搜索生成由另一个特定输入生成的相同哈希的输入。

因此,任何抗碰撞哈希函数也能抵抗第二原像攻击,因为后者总是意味着碰撞。但是,仍然可以对碰撞函数执行原像攻击,因为这意味着从单个输出中找到单个输入。

挖矿

比特币挖矿中有许多步骤涉及哈希函数,例如检查余额、链接交易输入和输出以及对块内的交易进行哈希处理以形成 Merkle 树。但比特币区块链安全的主要原因之一是矿工需要执行无数次哈希运算才能最终找到下一个区块的有效解决方案。

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

在这种情况下,哈希率代表了在比特币挖矿中投入了多少计算机能力。如果网络的哈希率增加,比特币协议会自动调整挖掘难度,将挖掘一个块所需的平均时间保持在接近 10 分钟。反之,如果少数矿工决定停止挖矿,导致算力大幅下降,则会调整难度以使其更容易挖矿(直到平均出块时间回到 10 分钟)。

请注意,矿工不必检测冲突,因为它们可以生成多个哈希作为有效输出(从一定数量的零开始)。所以一个区块有几种可能的解决方案,矿工只需要找到其中一个——一个由挖矿难度决定的阈值。

由于比特币挖矿是一项成本密集型任务,矿工没有理由欺骗系统,这将导致重大经济损失。加入区块链的矿工越多,它就变得越大越强大。 (中国禁止参与挖矿)

结束语

毫无疑问,哈希函数是计算机科学中必不可少的工具,尤其是在处理大量数据时。当与密码学相结合时,散列算法可以非常通用,以许多不同的方式提供安全性和身份验证。因此,加密哈希函数对几乎所有加密货币网络都是必不可少的,因此了解它们的属性和工作机制肯定会对任何对区块链技术感兴趣的人有所帮助。