This article has been translated from English to Simplified Chinese.

散列是如何工作的?

上一课中,我介绍了散列的概念和相关术语。现在,让我们来学习一下它的运作原理!

散列是一种数学运算,执行起来很简单,但很难逆转

散列过程将一段数据转换为二进制代码,即一堆0和1

然后,它分解这些数字,并应用一些秘密的“混淆”,这是通过一种称为“哈希函数”的东西完成的。

散列在加密中的工作原理是什么?

当用于比特币和其他加密货币时,最终结果通常是一个由数字和字母组成的64位长字符串

由于转换是通过加密算法(“哈希函数”)完成的,所以混淆公式是未知的,因此64位字符串无法被逆向。

Hashing Concept

字符串 是由一系列字符组成的

字符串就像句子。它们是由字符组合而成的。

String

可以将哈希值想象成一堆随机字母和数字

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

例如,每次将上述字符串通过哈希函数处理时,都会产生相同的哈希值。

但如果我们对字符串稍作改动会怎样呢?(黄色高亮部分。

String Change

句子结尾处问号代替了句号。

尽管句子中的改动很小,但哈希值却完全不同。

你可以看到如何使用哈希值来检测篡改,因为即使对哈希函数的输入进行微小改动,也会导致完全不同的输出。

记住这一点非常重要,因为在后面的课程中,你会看到如何利用这一点来防止之前的交易被篡改。

散列函数是单向的。

The hash function is ONE-WAY only.

你不能通过现有的散列值来反向计算,从而找到输入字符串。

因此,如果只知道散列,就无法知道原始输入是什么。您无法对散列进行“逆向工程”或破解。

最后,输出(“哈希”)的长度不会随着输入信息量的增加而增加。哈希函数接受任何长度的输入数据,并返回一个固定长度的值。

Hash Output is Fixed

如果您输入《哈利·波特》一书的全部文字,该书有76000多个单词,哈希输出仍然只有64个字符长。

再说一遍,如果你《哈利·波特》一书中拼错了一个字母,并使用哈希函数处理它,那么它会产生一个与上面完全不同的哈希值。

这样,您无需手动检查整本书,就能立即知道这本书是否被修改过!是不是很巧妙?