引言
说真的,我第一次接触这些高级哈希概念时,脑子里只有三个字:啥玩意儿?今天我就用最接地气的方式,带你彻底搞懂哈希函数。
一、哈希到底在干啥?
1.1 哈希的本质就是"分桶"
想象你有一个超大的玩具箱,里面有1000个不同的玩具。现在你想快速找到“红色的小汽车”,怎么办?
原始方法查找:一个一个翻 → O(n) 慢死了!
哈希查找:把玩具分类 → 红色玩具放红桶,蓝色玩具放蓝桶...
哈希表就是干这个的:把数据分散到不同的“桶”里,找的时候直接去对应的桶里拿。
1.2 普通哈希的问题所在
# 我们先用一个简单的哈希函数为例:取余数
def simple_hash(key, table_size):
return key % table_size
# 问题来了:如果所有key都是10的倍数呢?
keys = [10, 20, 30, 40, 50]
table_size = 5
for key in keys:
print(f"{
key} → 桶{
simple_hash(key, table_size)}")
# 输出:全部进入桶0!
这就是哈希碰撞:多个数据挤进同一个桶,链表变长,查找变慢。
最坏情况:所有数据进一个桶 → 退化成链表 → O(n)
二、全域哈希

2.1 核心思想:随机应变
普通哈希的问题是:哈希函数固定,攻击者可以构造恶意数据。
全域哈希的解决方案:
不用一个哈希函数,而是准备一个函数家族
每次运行时,随机挑一个用
攻击者:你猜我今天用哪个?😏

最低0.47元/天 解锁文章
816

被折叠的 条评论
为什么被折叠?



