共计 767 个字符,预计需要花费 2 分钟才能阅读完成。
简介
海绵函数 sponge function 是密码学中应用的一种函数,它接管肯定长度的输出,而后输入肯定长度的输入,两头蕴含了无限个外部状态。
因为海绵函数的弱小性能,所以能够用来建模和实现许多明码原语,包含明码散列,音讯身份验证码,生成掩码,流明码,伪随机数生成器等。
本文将会解说海绵函数的构造。
海绵函数的构造
咱们先看一个海绵函数的结构图:
这个函数被分成了两局部,右边局部叫做排汇局部,左边局部叫做输入局部,一吸一出,像是海绵一样,所以叫做海绵函数。
P 示意的是输出的字符串,Z 示意的时候输入字符串。
一个海绵函数由三局部组成,别离是 state, 函数 f 和填充函数 pad。
state 就是上图的 r + c 局部,r 被称为Bitrate,c 被称为Capacity。
P 被分成 n 份,每一份都会跟 Bitrate 进行异或操作,如果 P 的长度不是 Bitrate 的整数倍,那么须要应用 Pad 函数进行填充。
每一轮,Bitrate 跟 P 进行异或操作的后果作为最新的 Bitrate, 而后生成新的 state,而后这个 state 又被 f(state)来替换。
其中函数 f 是 从 n 个 {0,1} 到 n 个{0,1} 的映射。
就这样一轮一轮进行上来,直到所有的 P 都参加了运算。
输入局部是将最终生成的 state 进行 f 运算,每次运算都取 Bitrate 局部作为输入,从而失去最终的输入。
海绵函数的利用
因为海绵函数的优良的个性,所以被用在很多方面。比方 SHA- 3 的实现算法 Keccak 就是应用的海绵函数。
通过替换 f 和多轮置换,海绵函数能够生成十分平安的明码算法,所以失去了宽泛的应用。
本文已收录于 http://www.flydean.com/36-sponge-function/
最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!
欢送关注我的公众号:「程序那些事」, 懂技术,更懂你!