This article has been translated from English to Traditional Chinese.

散列是如何工作的?

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

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

散列过程将一段数据转换为二进制代码,即由0和1组成的字符串

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

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

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

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

Hashing Concept

字符串是 字符的序列。

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

String

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

唯一的数据将始终产生相同的哈希值

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

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

String Change

句子以问号结尾,而不是句号。

尽管句子中的改动微乎其微,但哈希值却完全不同。

你可以看到散列是如何被用来检测篡改的,因为即使是对散列函数输入的一个小改动也会导致完全不同的输出。

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

散列函数是单向的。

The hash function is ONE-WAY only.

您不能通过现有散列值来反向还原输入字符串。

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

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

Hash Output is Fixed

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

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

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