哈希函数:原理、算法与安全性分析
基于置换的哈希函数:海绵函数
经过数十年的研究,密码学家已经对基于分组密码的哈希技术有了全面的了解。然而,人们不禁思考,是否存在更简单的哈希方法?毕竟哈希函数不需要密钥,为何还要使用需要密钥的分组密码算法呢?于是,基于固定密钥分组密码(即单一置换算法)的哈希函数——海绵函数应运而生。
海绵函数使用单一置换,而非压缩函数和分组密码(如图 1 所示)。它不像传统方法那样用分组密码混合消息位和内部状态,而是简单地进行异或(XOR)操作。海绵函数不仅比默克尔 - 达姆gård 函数更简单,而且更具通用性,可作为哈希函数、确定性随机比特生成器、流密码、伪随机函数和认证密码使用。其中,最著名的海绵函数是 Keccak,也被称为 SHA - 3。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
H0(初始状态 H0):::process -->|XOR M1| P1(置换 P):::process
P1 -->|XOR M2| P2(置换 P):::process
P2 -->|...| P3(置换 P):::process
P3 -->|...| Extract(提取哈希):::process
M1(消息块 M1):::process -->|XOR| P1
M2(消息块 M2):::process -->|XOR| P2
M3(消息块 M3):::process -->|...| P3
超级会员免费看
订阅专栏 解锁全文
1712

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



