This article has been translated from English to Simplified Chinese.

在深入探讨比特币挖矿这个话题之前,我们需要先绕个弯,了解一下加密货币的一个基本概念。

为了真正理解比特币和其他加密货币的工作原理,首先必须了解“哈希”的概念。

当您看到“哈希”这个词时,有些人可能会想到哈希薯饼,一种流行的美式早餐食品,而像史努比狗狗(Snoop Dogg)这样的人可能会想到大麻浓缩产品。 🌿

Wrong kind of hash

在本课中,我将介绍另一种哈希

这是一个技术概念,但您必须熟悉它,所以我将为您详细解释。

要理解比特币挖矿的工作原理(这是下一课的内容),也需要熟悉哈希的概念,所以请不要跳过这些课程。 👁️

什么是哈希?

散列是一种加密方法,可将任何形式的数据转换为固定长度的唯一文本字符串。

密码学是研究如何从外部观察者那里进行安全通信的技术。在互联网时代,密码学被用来保护计算机信息或“数据”。

如果还不够明显的话,加密货币中的“加密”一词就是指密码学

散列是密码学的基本组成部分。在加密货币中,对“加密”起着重要作用。

简单来说,散列是指通过散列函数 任意长度的文本输入,并输出固定长度的结果

Hash Function

任何数据都可以“哈希化”,无论其大小、类型或长度如何。

产生的散列总是具有相同的长度

在下面的例子中,使用SHA-1散列函数,无论“输入”的长度如何,“输出”总是40个字符长

Hashing Example - Hello

Hashing Example - BabyPips.com

Hashing Example - i

以下是对三个示例的快速比较:

输入 哈希值
你好 f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
BabyPips.com 8c8780d0b70c5ef42a534846cc042629cf07a440
ca73ab65568cd125c2d27a22bbd9e863c10b675d

请注意,尽管“输入”不同,但三个哈希值的长度仍为40个字符

在这个特定示例中,固定长度为40个字符,由所使用的特定哈希函数(“SHA-1”)决定,稍后我们将对此进行解释。

目前,您只需知道其他散列函数可能会输出不同的固定长度。大多数散列函数的固定长度都超过40个字符。

散列值相当于数字指纹。

唯一的数据总是会产生相同的散列值。

例如,如果您通过哈希函数运行“Hello”一百万次,那么上述哈希值将出现一百万次。

对于“Hello”这个词,它的SHA-1散列值始终是:

f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0

只有“Hello”才会产生这个哈希值。

对“Hello”的任何改动,哪怕只是将其改为“hello”,散列函数都会产生完全不同的散列值。

这就是为什么哈希值被称为数字“指纹”的原因。

就像您的指纹独一无二一样,哈希值对于特定的数据输入也是独一无二的。

A hash is like a fingerprint

哈希值无法逆转。

哈希函数的输入被称为“预像”,但为了简单起见,我仅使用“输入”一词。

散列函数的输出称为“散列值”或“摘要”,或简称为“散列”。

散列函数的作用是单向的

Hash Function is One-Way

由于哈希函数是单向函数,因此输出(即“哈希”)不能用于揭示输入(即“预像”)。

这意味着,如果只看到散列,就无法解密散列所代表的原始数据(“前像”)。

哈希函数会产生不可逆的哈希值

不可逆意味着,如果只有散列,就无法用它来推断原始数据是什么。这样,原始数据就能保持安全和未知

什么是哈希函数?

哈希函数 是一种数学运算,它使用特定的算法任意长度的输入数据转换为固定长度的输出。

算法只是用于执行计算的一组逐步指令,由软件程序完成。

输入的内容是单个字母、单词、完整句子、书页还是整本书都无关紧要,这是任意部分。

每个输入都会产生一个固定长度的字母数字字符串,作为唯一的输出。

字母数字的意思是,输入的内容由字母和数字组成。

一个有用的散列函数可以隐藏输入可能是什么样子的任何线索

例如,它必须无法确定输入是长是短,或者包含数字还是字母。此外,只要改变输入中的一个字符,就会产生完全不同的输出。

流行的哈希函数

所有散列函数的工作方式都类似。您输入数据,散列函数对数据进行“打乱”,并输出散列值。

常见的散列函数包括:

  • MD-5:消息摘要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-256散列函数的输出长度始终相同,均为64个字母数字字符。

现在让我们来看看散列在加密中的工作原理。