# Summary 中文成语之类不算是压缩,而是一种哈希表,让你记住键值对,然后只保留键。也可以说是中文密码本,成语就是密码,成语故事就是密码对应的内容,我们从小就要背密码本所以一看密码就知道对应的内容 ## 是什么? 通俗定义:把任意长度的数据变成固定长度的"指纹" **生活类比:榨汁机** ```Java 输入(水果) 榨汁机 输出(果汁) ─────────────────→ ┌─────┐ ────→ ───────── 🍎 苹果 │SHA- │ 🥤 250ml 🍎🍎🍎 三个苹果 │ 256 │ 🥤 250ml 🍉 西瓜 │ │ 🥤 250ml 🍇🍓🍊 混合水果 └─────┘ 🥤 250ml 特点: - 无论放多少水果 → 输出都是250ml - 不同水果 → 不同味道的果汁 - 无法从果汁还原出水果 ``` ## 不安全,会碰撞 ```python # 简单的哈希函数 def simple_hash(text): return len(text) # 只返回长度 simple_hash("Hello") → 5 simple_hash("World") → 5 simple_hash("abcde") → 5 ``` ❌ 问题:很多不同输入产生相同输出(**碰撞**) [[SHA‑256]]是安全的不碰撞的 ## 和布隆的区别 - 哈希表:插入“hello”→表中存{sha256(hello):1};再来“hello”→计数变2;能输出哪些行是唯一的。 - [[布隆过滤器]]:插入“hello”→置位k个bit;查询“hello”→大概率命中;查询“world”→可能误报“见过”;无法告诉“hello”出现了几次或 - # Cues [[SHA‑256]] [一致性哈希](一致性哈希.md)