主页 > imtoken下载链接 > 什么是比特币哈希函数 | 黄金百科全书

什么是比特币哈希函数 | 黄金百科全书

imtoken下载链接 2023-02-07 06:27:57

哈希函数是一种数学过程,它接受任意大小的输入数据并返回固定大小的输出数据。

对比特币感兴趣的人应该或多或少听说过“密码哈希函数”这个词。 但这到底是什么意思,它与加密货币有何关系?

哈希函数不仅是比特币协议的重要组成部分,也是整个信息安全的重要组成部分。

我们将通过下面的一些简单示例展示哈希函数的工作原理。

比特币 哈希谜题_rsa是哈希算法吗_比特币采用的哈希算法是

什么是哈希函数?

从理论上讲,哈希函数是一个数学过程,它接受任意大小的输入数据并返回固定大小的输出数据。

更具体地说,它将任意长度的字母序列作为输入——我们称之为字符串——并返回固定长度的字母序列。 无论输入字符串是单个字母、单词、句子还是整本小说,输出(称为摘要)的长度始终相同。

此类哈希函数的一个常见用例是存储密码。

当您使用任何网络服务创建需要密码的用户帐户时。 这种密码是通过哈希函数运行的,存储的是密码信息的哈希摘要。 当您输入密码登录帐户时,系统会对您输入的密码运行相同的哈希函数,服务器会检查结果是否与存储的摘要匹配。

这意味着即使黑客获得了对用于存储哈希值的数据库的访问权限,他们也无法立即破坏所有用户帐户,因为生成特定哈希值的密码不容易找到。

Python简单哈希函数

您可以使用 Python(一种默认安装在 Mac 和 Linux 操作系统上的编程语言)来试验散列。 (本教程假设某些版本的 OSX 或 Linux,因为 Windows 使用 Python 更复杂)

首先,打开终端,输入 python 并按 Enter。

然后您将进入 Python REPL,这是一个您可以直接尝试 Python 命令的环境,而不是在单独的文件中编写程序。

然后输入以下值,在每行后按 Enter,并在标记处键入 TAB:

import hashlibdef hash(mystring):[TAB] hash_object = hashlib.md5(mystring.encode())[TAB] print(hash_object.hexdigest())[ENTER]

这样,您就创建了一个函数 - hash(),它将使用 MD5 哈希算法计算特定字符串的哈希值。 该函数通过在上面的括号 () 中插入字符串来运行。 例如:

hash("CoinDesk rocks")

按 Enter 并查看该字符串的散列摘要。

您会看到,在同一个字符串上调用此散列函数将始终生成相同的散列值,但添加或更改其中的字符将生成完全不同的散列值:

hash("CoinDesk rocks") => 7ae26e64679abd1e66cfe1e9b93a9e85hash("CoinDesk rocks!") => 6b1f6fde5ae60b2fe1bfe50677434c88

比特币哈希函数

在比特币协议中,哈希函数是区块哈希算法的一部分,可用于通过挖矿过程将新交易写入区块链。

在比特币挖矿中,函数的输入全部来自最近的未确认交易(以及与前一个区块相关的一些时间戳和对一些额外输入的引用)

在上面的代码示例中,我们已经看到更改哈希函数的一小部分会导致完全不同的输出。 此属性对于挖矿过程中的“工作量证明(POW)”算法至关重要:为了成功“解决”一个区块,矿工需要将所有输入与他们自己的输入数据组合在一起,这样得到的哈希值将从一些 0 开始。

作为基本演示比特币采用的哈希算法是,我们可以尝试通过在“CoinDesk rocks!”之后手动添加感叹号 (!) 来“挖掘”我们的 Python 哈希函数。 哈希。

>>> hash("CoinDesk rocks!!")66925f1da83c54354da73d81e013974d>>> hash("CoinDesk rocks!!!")c8de96b4cf781a6373766c668ceac0f0>>> hash("CoinDesk rocks!!!")9ea367cea6a2cc4a6f5a1d9a93>4d0 hashda"sCoin>4d0 rocka"s !!!!!")b8d43387d98f035e2f0ac49740a5af38>>> hash("CoinDesk rocks!!!!!")0fe46518541f4739613b9ce29ecea6b6 => 已解决!

当然,解决一个比特币块的散列——在撰写本文时,它必须以 18 个零开头——需要非常大的计算负载(比特币网络的所有计算机处理能力加起来仍然需要将近 10 分钟才能解决一个堵塞)。

需要大量的处理能力意味着新比特币的挖掘需要很长时间才能完成比特币采用的哈希算法是,不可能一下子挖出所有的比特币。

为了能够从挖矿中赚取比特币,你需要投入大量的工作来解决区块——通过赚取这个奖励,你将所有新的交易锁定到区块中,这些区块是添加到所有之前交易中的永久性区块 性记录:blockchain .

原文:作者:Corin Faife 编译:Kyle 稿件来源(翻译):巴比特资讯()