SHA-3学习——轮函数

今天晚上加班学习f轮函数

SHA-3算法的f轮函数学习。f轮函数包含24轮运算,每个迭代运算包含5步迭代。θ、ρ、π、χ 和 ι,下面分别进行学习。

在学习上述5步迭代时,根据定义建立坐标对运算进行表示。

SHA-3学习——轮函数_第1张图片

在学习SHA-3算法时经常会看到这么一个立方体,其实就是三位坐标系上0≤x,y≤4,0≤z≤63|x,y,zϵN上的1600个坐标点。

Axyz=M[64x+5y+z]

其中M[n]是迭代运算的输入的第n位。

而后进行5步迭代:

1.首先是θ

SHA-3学习——轮函数_第2张图片

(粘贴word格式老出错,干脆截图。hhh)

2.而后是ρ:

 

其中,rx,y是一个固定矩阵

SHA-3学习——轮函数_第3张图片

3.再后是π:

 

4.又后是χ:

 

以上4个公式均为线性变化,比较容易实现也比较容易理解。

5.最后就是非线性运算ι:

 

 

最后一步的非线性运算,旨在破坏算法的平衡性、对称性,RC是一个固定的数组,长度为64比特。

可见SHA-3算法中的f函数虽然流程较多,但是实现起来并不困难,优化空间也十分的充足。加上轮函数里面调用的轮运算次数多,可以进行流水、并行等设计,当然这都是后话了。

明天准备学习SHA-3挤压(Squeeze)阶段,也就是输出阶段的结构,希望能对大家有所帮助吧~明天加油!

你可能感兴趣的:(算法)