pub val LANES: usize = 25
1600 位状态中的 64 位通道数量
pub rec Sponge;
由每个 SHA-3 和 SHAKE 变体共享的海绵(sponge)状态
lanes 将 1600 位状态保存为 25 个小端 64 位字;rate 是吸收/挤出块大小(以字节为单位);pos 是吸收或挤出期间当前块内的字节偏移量。
pub fun permute(st: *u64);
就地应用 Keccak-f[1600] 置换
st:指向 25 通道状态的指针
pub fun init(s: *Sponge, rate: usize);
将海绵重置为给定速率(以字节为单位)的零状态
s:指向海绵的指针 rate:块大小(以字节为单位)
pub fun absorb(s: *Sponge, data: *u8, len: usize);
吸收输入字节,在每个满速率块上进行置换
s:指向海绵的指针 data:指向输入字节的指针 len:要吸收的字节数
pub fun finalize(s: *Sponge, ds: u8);
应用带有给定域分离字节的 pad10*1 并进行置换,结束吸收阶段并为挤出准备海绵
s:指向海绵的指针 ds:域分离字节(SHA-3 为 0x06,SHAKE 为 0x1f)
pub fun squeeze(s: *Sponge, out: *u8, len: usize);
挤出输出字节,在速率块之间进行置换;可重复调用
s:指向海绵的指针 out:指向输出缓冲区的指针 len:要生成的字节数