This article has been translated from English to Simplified Chinese.
散列是如何工作的?
在上一课中,我介绍了散列的概念和相关术语。现在,让我们来学习一下它的运作原理!
散列是一种数学运算,执行起来很简单,但很难逆转。
散列过程将一段数据转换为二进制代码,即一堆0和1。
然后,它分解这些数字,并应用一些秘密的“混淆”,这是通过一种称为“哈希函数”的东西完成的。
散列在加密中的工作原理是什么?
当用于比特币和其他加密货币时,最终结果通常是一个由数字和字母组成的64位长字符串。
由于转换是通过加密算法(“哈希函数”)完成的,所以混淆公式是未知的,因此64位字符串无法被逆向。
字符串 是由一系列字符组成的 。
字符串就像句子。它们是由字符组合而成的。
可以将哈希值想象成一堆随机字母和数字。
唯一的数据总是会产生相同的散列值。
例如,每次将上述字符串通过哈希函数处理时,都会产生相同的哈希值。
但如果我们对字符串稍作改动会怎样呢?(黄色高亮部分。
句子结尾处问号代替了句号。
尽管句子中的改动很小,但哈希值却完全不同。
你可以看到如何使用哈希值来检测篡改,因为即使对哈希函数的输入进行微小改动,也会导致完全不同的输出。
记住这一点非常重要,因为在后面的课程中,你会看到如何利用这一点来防止之前的交易被篡改。
散列函数是单向的。
你不能通过现有的散列值来反向计算,从而找到输入字符串。
因此,如果只知道散列,就无法知道原始输入是什么。您无法对散列进行“逆向工程”或破解。
最后,输出(“哈希”)的长度不会随着输入信息量的增加而增加。哈希函数接受任何长度的输入数据,并返回一个固定长度的值。
如果您输入《哈利·波特》一书的全部文字,该书有76000多个单词,哈希输出仍然只有64个字符长。
再说一遍,如果你在 《哈利·波特》一书中拼错了一个字母,并使用哈希函数处理它,那么它会产生一个与上面完全不同的哈希值。
这样,您无需手动检查整本书,就能立即知道这本书是否被修改过!是不是很巧妙?




