密码学系列之:海绵函数sponge function

2021年09月15日 阅读数:1
这篇文章主要向大家介绍密码学系列之:海绵函数sponge function,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
简介

海绵函数sponge function是密码学中使用的一种函数,它接收必定长度的输入,而后输出必定长度的输出,中间包含了有限个内部状态。算法

由于海绵函数的强大功能,因此能够用来建模和实现许多密码原语,包括密码散列,消息身份验证码,生成掩码,流密码,伪随机数生成器等。安全

本文将会讲解海绵函数的结构。ide

海绵函数的结构

咱们先看一个海绵函数的结构图:函数

密码学系列之:海绵函数sponge function_海绵函数

这个函数被分红了两部分,左边部分叫作吸取部分,右边部分叫作输出部分,一吸一出,像是海绵同样,因此叫作海绵函数。blog

P表示的是输入的字符串,Z表示的时候输出字符串。教程

一个海绵函数由三部分组成,分别是state, 函数f和填充函数pad。ci

state就是上图的r+c部分,r被称为Bitrate, c被称为Capacity字符串

P被分红n份,每一份都会跟Bitrate进行异或操做,若是P的长度不是Bitrate的整数倍,那么须要使用Pad函数进行填充。get

每一轮,Bitrate跟P进行异或操做的结果做为最新的Bitrate, 而后生成新的state,而后这个state又被f(state)来替换。it

其中函数 f 是 从n个{0,1} 到n个{0,1}的映射。

就这样一轮一轮进行下去,直到全部的P都参与了运算。

输出部分是将最终生成的state进行f运算,每次运算都取Bitrate部分做为输出,从而获得最终的输出。

海绵函数的应用

由于海绵函数的优秀的特性,因此被用在不少方面。好比SHA-3的实现算法Keccak就是使用的海绵函数。

经过替换f和多轮置换,海绵函数能够生成很是安全的密码算法,因此获得了普遍的使用。

本文已收录于 http://www.flydean.com/36-sponge-function/

最通俗的解读,最深入的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注个人公众号:「程序那些事」,懂技术,更懂你!