海棉结构,或称海绵哈希,是当前密码学中一种重要构造结构,如当前sha-3采用的即是海绵结构。
海绵结构是一类具有有限内部状态的算法,可以将任意有限长的输入消息变成任意长度输出的消息摘要,其结构如下,其中rrr代表Bitrate,ccc代表Capacity,P0,...,Pn−1P_0,...,P_{n-1}P0,...,Pn−1是输入值,Z0,...,ZmZ_0,...,Z_{m}Z0,...,Zm是输出值,fff是置换函数:
海绵结构其计算过程主要分为两个部分:abaorbing和squeezing。
在abaorbing过程中,fff函数顺序迭代吸收消息,通常情况下,输入消息不是分组长度的整数倍,因此还要进行填充操作。
在squeezing过程中,根据输出长度来输出哈希值,每输出一个值,都要利用fff函数来更新内部状态。