在深入研究比特币挖矿之前,我们需要绕道而行,了解加密货币的基础概念。
为了真正了解比特币和其他加密货币的工作原理,首先了解“哈希”的概念至关重要。
当您看到“哈希”这个词时,有些人可能会想到土豆煎饼,这是一种流行的美式早餐食品,而其他人(例如 Snoop Dogg)可能会想到大麻浓缩产品。🌿
在本课中,我将讨论另一种哈希!
这是一个技术概念,但你必须熟悉它,所以我会为你简单而轻松地分解它。
还需要熟悉哈希的概念才能理解比特币挖矿的工作原理(这是下一个指南),所以请不要跳过这些课程。👁️
什么是哈希?
散列是一种密码学方法,可将任何形式的数据转换为固定长度的唯一文本字符串。
密码学是对来自外部观察者的安全通信技术的实践和研究。在互联网时代,密码学被用来保护计算机信息或“数据”。
如果不是很明显,加密货币中的“加密”代表密码学。
散列是密码学的基本部分。并在加密货币中的“加密”背后发挥着巨大的作用。
简单来说,散列意味着通过一个散列函数输入任意长度的文本,该函数产生一个 FIXED 长度的输出。
任何数据都可以“散列”,无论其大小、类型或长度如何。
产生的散列总是相同的长度。
在下面的示例中,使用SHA-1哈希函数,无论“输入”的长度如何,“输出”的长度始终为40 个字符。
以下是三个示例的快速比较:
输入 | 哈希 |
---|---|
你好 | f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0 |
BabyPips.com | 8c8780d0b70c5ef42a534846cc042629cf07a440 |
我 | ca73ab65568cd125c2d27a22bbd9e863c10b675d |
请注意,即使“输入”不同,所有三个哈希仍然是40 个字符长。
在该具体示例中,固定长度为40个字符长,由所使用的具体散列函数(“SHA-1”)决定,稍后将解释。
现在,只知道其他哈希函数可能会输出不同的固定长度。大多数具有超过 40 个字符的固定长度。
哈希充当数字指纹。
一条唯一的数据总是会产生相同的哈希值。
例如,如果您通过哈希函数运行“Hello”一百万次,则上述哈希值将出现一百万次。
对于“Hello”这个词,它的 SHA-1 哈希值总是:
f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
只有“你好”才会产生那个哈希值。
对“Hello”的任何更改,即使只是将其更改为“hello”,哈希函数都会产生完全不同的哈希值。
这就是为什么哈希被称为数字“指纹”的原因。
就像您的指纹对您来说是唯一的一样,哈希对于特定的数据输入也是唯一的。
哈希不能反转。
散列函数的 INPUT 称为“原像”,但为了简单起见,我只使用“输入”。
哈希函数的输出称为“哈希值”或“摘要”或简称为“哈希”。
散列函数旨在以单向方式运行。
由于散列函数是单向函数,因此输出“散列”不能用于揭示输入“原像”。
这意味着如果您看到的只是散列,您将无法破译散列所代表的原始数据(“原像”)。
散列函数产生不可逆的散列。
不可逆意味着如果你只有散列,你就不能用它来找出原始数据是什么。这允许原始数据保持安全和未知。
什么是哈希函数?
散列函数是一种数学运算,可将任意长度的输入数据转换为使用特定算法执行的固定长度输出。
算法只是用于执行由软件程序完成的计算的逐步指令集。
输入是一个字母、一个单词、一个完整的句子、一本书的一页还是整本书都没有关系,那是任意部分。
每个输入将产生一个唯一的输出,表示为一个固定长度的字母数字字符串。
字母数字只是意味着某物由字母和数字组成。
一个有用的散列函数隐藏了关于输入可能是什么样子的任何线索。
例如,需要不可能确定输入是长还是短或包含数字或字母。此外,仅更改输入中的一个字符会导致完全不同的输出。
流行的哈希函数
所有散列函数都以类似的方式工作。您输入数据,散列函数“打乱”数据并输出散列。
常见的哈希函数包括:
- MD-5: Message Digest 5 (MD5) 是一种常见的散列函数。过去,它被认为是安全的,但现在,黑客已经发现了如何解码算法,并且能够在几秒钟内完成。
- SHA:安全散列算法 (SHA) 是另一种散列函数。SHA 有多种变体,分为四个系列:SHA-0、SHA-1、SHA-2 和 SHA-3:通常,数字越大,发布的时间越近,算法就越安全。
出于我们的目的,您现在唯一需要了解的散列函数是安全散列算法 (SHA )。更具体地说,SHA-2 家族,因为它包含家族中名为SHA-256的特殊成员。
SHA-256 是一种散列函数,可将文本字符串转换为另一个长度始终相同的字符串:64 个字母数字字符长。这相当于 256 位,这就是其名称中的“256”的由来。
它很特别,因为它是比特币系统的几个部分中使用的哈希函数,您将在后面的课程中学习。现在,重要的是要知道SHA-256 是一种散列函数,也是比特币使用的散列函数。
输入是来自哈利波特书籍的页面还是整个哈利波特系列书籍。SHA-265 散列函数的输出将始终是显示为64 个字母数字字符的相同长度。
现在让我们看看散列在加密中是如何工作的。
哈希是如何工作的?
我介绍了散列的概念和相关术语。现在,让我们了解它是如何工作的!
散列是一种易于执行但极难逆转的数学运算。
哈希过程将一段数据转换为二进制代码,这只是一堆 0 和 1。
然后它分解数字并应用一些秘密的“混杂”,这是通过称为“散列函数”的东西完成的。
哈希在加密货币中如何工作?
当用于比特币和其他加密货币时,最终结果通常是64 位长的数字和字母字符串。
因为转换是通过加密算法(“散列函数”)完成的,所以混杂公式是未知的,因此 64 位字符串无法反转。
字符串是一个字符序列。
字符串就像句子。它们由字符组合形成。
将散列视为一堆随机字母和数字。
一条唯一的数据总是会产生相同的哈希值。
例如,上面的字符串每次通过散列函数运行时,总是会产生相同的散列。
但是如果我们只对字符串进行微小的更改会发生什么?(以黄色突出显示。)
句子以问号而不是句号结尾。
尽管句子中的变化很小,但哈希值却完全不同。
您可以看到如何使用散列来检测篡改,因为即使对散列函数的输入进行微小更改也会导致完全不同的输出。
记住这一点非常重要,因为在后面的课程中,您将看到如何使用它来防止先前的交易被篡改。
哈希函数仅是 ONE-WAY。
您不能采用现有哈希并尝试将其反转以查找输入字符串。
因此,如果您只知道哈希,则无法知道原始输入是什么。您不能“逆向工程”或破解哈希。
最后,输出的长度(“哈希”)不会随着输入信息的增加而增长。哈希函数接受任意长度的输入数据并返回一个具有固定长度的值。
如果你把一本超过 76,000 个单词的哈利波特书的全部文本放在一起,哈希输出仍然只有 64 个字符长。
再一次,如果你在哈利波特书中拼错了一个字母,并通过散列函数运行它,它会产生与上面完全不同的散列。
这将使您立即知道这本书已被修改,而无需手动检查整本书!很整洁吧?
[…] 如果您不熟悉什么是“哈希”。请阅读我的“哈希初学者指南”。 […]