什么是哈希值?
哈希是一种数学函数,它将任意长度的输入转换为固定长度的加密输出。因此,无论原始数据量或文件大小如何,其唯一的哈希值始终保持不变。此外,哈希值不能用于从哈希输出“逆向工程”原始输入,因为哈希函数是“单向的”(就像绞肉机一样;你无法将绞碎的牛肉重新变成牛排)。但是,如果对相同的数据使用哈希函数,其哈希值将保持不变,因此,如果您已经知道哈希值,则可以验证数据是否相同(即未被篡改)。
哈希对于加密货币的区块链管理也至关重要。
要点总结
- 哈希函数满足加密对信息安全的要求。
- 哈希值的长度是固定的,因此如果有人试图破解区块链,几乎不可能猜出哈希值。
- 相同的数据总是会产生相同的哈希值。
- 哈希是区块链网络的基础之一。
- 哈希值是根据区块头中包含的信息生成的。
灰烬的工作原理
典型的哈希函数接受可变长度的输入,并返回固定长度的输出。加密哈希函数结合了哈希函数的消息传递能力和安全特性。哈希函数是决定信息加密方式的算法。
例如,安全哈希算法 256 (SHA-256) 通过以下过程对接收到的输入进行加密:
- 将其转换为二进制
- 创建哈希值
- 初始化常量
- 将数据分块成比特
- 创建消息计划
- 运行压缩循环
- 修改最终值
使用 SHA-256 算法,“Hello”一词的输出结果与“Hello world”和“Hello John”的输出结果字符数相同(均为 64)。然而,这三个词的哈希值却截然不同——请注意,大写字母也会影响哈希值:
- 你好:185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
- 你好世界:64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
- 你好约翰:a8119595d77342cc73c93697a7f70920d3f4ded5d458e31907607e997ff76868
用于生成哈希值的函数是确定性的,这意味着每次使用相同的输入都会产生相同的结果。SHA-256 可以在几毫秒内生成哈希输出,且计算能力非常有限,但同时也使得确定原始输入变得十分困难。这使得哈希成为保护加密货币的理想选择,因为即使使用现代技术,也需要数千年才能逆向加密以确定原始输入。
哈希函数是计算机系统中常用的数据结构,用于检查消息的完整性和验证信息的真实性等任务。加密哈希函数增加了安全特性,使检测消息或信息的内容更加困难。
具体而言,加密哈希函数具有以下三个特性:
- 它们不会发生冲突:这意味着任何两个不同的输入哈希值都不应该映射到同一个输出哈希值。
- 它们可以被隐藏:很难从哈希函数的输出中猜出其输入值。
- 它们应该便于解谜:应该难以选择一个能产生预定义输出的输入。因此,输入应该选自尽可能宽泛的分布。
由于哈希算法具有这些特性,因此被广泛应用于网络安全领域——从保护密码到检测数据泄露,再到检查下载文件的完整性。
哈希和加密货币
加密货币的核心是区块链,它是一个全球分布式账本,通过哈希算法将各个交易数据块链接在一起。区块链只包含经过验证的交易,从而防止欺诈交易和双重支付。加密货币挖矿和验证都涉及对这种哈希算法的运算。
解决加密货币哈希问题首先使用前一个区块的区块头作为输入,并生成一个哈希值。每个区块头包含版本号、时间戳、前一个区块中使用的哈希值、默克尔根的哈希值、随机数和目标哈希值。
目标是生成一个小于或等于网络目标哈希值的哈希值。哈希值中包含一个称为 nonce 的数字序列,该序列只使用一次。挖矿程序会关注 nonce,第一次尝试时 nonce 的值为零。如果尝试失败,程序会将 nonce 加 1,然后再次生成哈希值。每次失败后,程序都会将 nonce 加 1,直到生成一个小于或等于目标哈希值的哈希值,此时该哈希值就被接受为有效解。
解决哈希问题需要矿工不断尝试生成正确的值,这需要大量的反复试验。成功解决哈希问题的矿工将获得奖励,并且该区块将被添加到区块链中。
矿工第一次就成功生成正确 nonce 的可能性极低,这意味着矿工可能需要尝试大量的 nonce 选项才能找到正确的值。难度越高(衡量生成满足目标哈希要求的哈希值的难易程度),生成解决方案所需的时间就越长。
什么是哈希函数?
哈希函数是一种算法,它将给定的一组数据转换或“映射”成固定大小的比特串,也称为“哈希”。
哈希值是如何计算的?
哈希函数利用复杂的算法,将任意长度的数据转换为固定长度(例如 256 个字符)的数据。如果原始数据中任意一位发生改变,整个哈希值都会随之改变,因此可用于验证数字文件和其他数据的真实性。
区块链中哈希值有什么用途?
哈希值在区块链系统的多个部分都有应用。每个区块头都包含前一个区块的哈希值,这确保了在添加新区块时,现有数据未被篡改。加密货币区块链使用哈希值来保护信息安全,并使账本不可篡改。
归纳总结
在加密货币区块链中,哈希值是一个确定性的十六进制数。这意味着无论输入的数据有多少个字符,哈希值始终是相同长度的字符。例如,比特币的哈希值始终为 64 位。
哈希值用于保护信息安全——在加密货币领域,它用于确保区块链区块中包含的数据不被篡改。当网络参与者尝试生成小于网络目标哈希值的哈希值时,他们便会对哈希函数加密的信息进行验证。一旦达到目标哈希值,网络就会关闭该区块——共识是在区块关闭后达成的,因为即使哈希值已被解决,网络仍会继续验证交易和区块信息。