【数据结构:从0到1】-15-高级哈希函数
2026/6/22 20:14:06 网站建设 项目流程

引言

说真的,我第一次接触这些高级哈希概念时,脑子里只有三个字:啥玩意儿?今天我就用最接地气的方式,带你彻底搞懂哈希函数。

一、哈希到底在干啥?

1.1 哈希的本质就是"分桶"

想象你有一个超大的玩具箱,里面有1000个不同的玩具。现在你想快速找到“红色的小汽车”,怎么办?

原始方法查找:一个一个翻 → O(n) 慢死了! 哈希查找:把玩具分类 → 红色玩具放红桶,蓝色玩具放蓝桶...

哈希表就是干这个的:把数据分散到不同的“桶”里,找的时候直接去对应的桶里拿。

输入数据
哈希函数
计算桶号
桶0
桶1
桶2
桶...

1.2 普通哈希的问题所在

# 我们先用一个简单的哈希函数为例:取余数defsimple_hash(key,table_size):returnkey%table_size# 问题来了:如果所有key都是10的倍数呢?keys=[10,20,30,40,50]table_size=5forkeyinkeys:print(f"{key}→ 桶{simple_hash(key,table_size)}")# 输出:全部进入桶0!

这就是哈希碰撞:多个数据挤进同一个桶,链表变长,查找变慢。

最坏情况:所有数据进一个桶 → 退化成链表 → O(n)

二、全域哈希

2.1 核心思想:随机应变

普通哈希的问题是:哈希函数固定,攻击者可以构造恶意数据
全域哈希的解决方案:

不用一个哈希函数,而是准备一个函数家族 每次运行时,随机挑一个用 攻击者:你猜我今天用哪个?😏
攻击者
系统
试图预测
随机性阻止预测
启动

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询