Hash Function 哈希函数

产生不可解密代码的算法。任意输入 → 定长输出,而且(理想情况下)不能从输出反推输入。

三个核心性质

  1. 确定性 —— 同样输入永远给同样输出
  2. 单向性 —— 给你 hash 值,算不出原文
  3. 抗碰撞 —— 几乎不可能造两个不同输入算出同一个 hash(见 hash collision)

encryption 的区别

HashEncryption
可逆
输出长度固定通常和输入相关
用途验证、指纹保密

加密是”我要让别人(凭密钥)看回原文”,hash 是”我永远不需要看回原文,只想验证两个东西一样不一样”。

常见用途

  • 存密码 —— 数据库存 hash(配合 salting),不存明文
  • 文件完整性 —— 下载后比对 SHA-256
  • 数字签名 —— 先 hash 再签,签短的
  • 区块链 —— 区块连接、工作量证明
  • 去重 —— Git commit ID、网盘秒传

常见算法

SHA-256 / SHA-3 / BLAKE3 用,MD5 / SHA-1 别用(已破)。存密码额外用 bcrypt / Argon2 / scrypt——它们故意算得慢,抗暴力破解