Elea Notes.

词条 · 加密与分布式 · 入门

哈希函数

把任意长的数据压成一段固定长度的指纹:同样的输入必得同样的指纹,改一个字指纹就全变。

也称:哈希、hash、散列、哈希函数、SHA-256、摘要

一句话

哈希函数是一台单向绞肉机:塞进去一本书或一个字,出来的都是固定长度的一小串数字(比如 SHA-256 固定输出 256 位)。同样的输入永远得到同样的输出;但拿到输出,你没法倒推回输入。

三条性质,决定了它能拿来做什么

  1. 确定性:同样输入 → 同样输出。所以它能当”指纹”用——你我各算一遍,结果必须一致。
  2. 雪崩效应:输入改动一个比特,输出看起来完全无关。所以它能检测篡改:文件动过一个标点,指纹就对不上。
  3. 抗碰撞 / 单向:找不到两份不同数据算出同一个指纹,也没法从指纹反推原文。所以指纹可以公开,不泄露原文。

为什么这在比特币里是核心

比特币用哈希做三件事,都靠上面的性质:

  • 给数据盖指纹:区块里所有交易压成一个指纹(见 Merkle 树),改任何一笔交易,指纹就变。
  • 把区块串成链:每个区块记着前一个区块的指纹。改动历史里任何一个区块,它后面所有指纹都失效——这就是”链”的强度来源。
  • 制造可验证的成本工作量证明要求算出一个开头有若干个零的哈希。因为没法反推,只能一个个试;但别人验证只要算一次。难做、易验是整套机制的支点。

一个常见误解

哈希不是加密。加密是可逆的(有钥匙能解回原文),哈希是单向的、永远解不回去。所以”密码用哈希存储”是对的说法,“密码被哈希加密”是外行话。