SHA-3算法的f轮函数学习。f轮函数包含24轮运算,每个迭代运算包含5步迭代。θ、ρ、π、χ 和 ι,下面分别进行学习。
在学习上述5步迭代时,根据定义建立坐标对运算进行表示。
在学习SHA-3算法时经常会看到这么一个立方体,其实就是三位坐标系上0≤x,y≤4,0≤z≤63|x,y,zϵN上的1600个坐标点。
Axyz=M[64x+5y+z]
其中M[n]是迭代运算的输入的第n位。
而后进行5步迭代:
1.首先是θ:
(粘贴word格式老出错,干脆截图。hhh)
2.而后是ρ:
其中,rx,y是一个固定矩阵
3.再后是π:
4.又后是χ:
以上4个公式均为线性变化,比较容易实现也比较容易理解。
5.最后就是非线性运算ι:
最后一步的非线性运算,旨在破坏算法的平衡性、对称性,RC是一个固定的数组,长度为64比特。
可见SHA-3算法中的f函数虽然流程较多,但是实现起来并不困难,优化空间也十分的充足。加上轮函数里面调用的轮运算次数多,可以进行流水、并行等设计,当然这都是后话了。
明天准备学习SHA-3挤压(Squeeze)阶段,也就是输出阶段的结构,希望能对大家有所帮助吧~明天加油!