概述
由于种种原因,对kyber算法的学习需要终止一阶段呜呜呜,现阶段学习SHA-3杂凑算法。SHA-3算法的优化等问题后续不知道还要不要学习,先学该算法的基本结构吧。
SHA-3算法是一种杂凑算法,其涉及到的数学专业知识不多,结构也相对简单,轮运算的5个变换是算法的核心也是难点。话不多说,首先了解算法的大致结构,而后再分解学习。
- 算法概述
(一)符号定义
r是消息分组长度,即将输入分成若干长度为r的数据块,r也被称为外部数据位宽。
c表示冗余量,也称为内部数据宽度、容量。
根据SHA-3标准,定义b=r+c为中间状态位宽,即轮函数的输入输出位宽。在SHA-3算法中,b的长度固定为1600bit。
f为轮函数运算,也是该算法中最复杂、最主要的运算,后续拆分来学习。
(二)输出模式
SHA-3算法有4种输出摘要长度:244、256、384、512,每一种输出长度会对应不同的r和c,其定义如下:
摘要长度 | b | r | c |
244 | 1600 | 1152 | 448 |
256 | 1600 | 1088 | 512 |
384 | 1600 | 832 | 768 |
512 | 1600 | 576 | 1024 |
分组长度是在选定摘要长度后确定的。
- 吸收流程(Absorb)
- 填充
算法输入进入轮运算前需要填充至r的整数倍。以输出摘要长度为256为例,算法输入M,填充时先在M结尾添“1”,而后添若干“0”,使填充“0”后的数据长度模256=(256-1),而后再次添加“1”即可完成填充。
- 中间数据处理
在填充完成后,会进行如下结构的迭代。
轮函数f稍后学习。对于次轮函数迭代,输入输出均分为两部分,即低r比特部分和长度c部分,r部分会与输入的明文分组P进行异或与上一轮输出的c部分拼接作为本次迭代的输入。
轮函数使用次数与输入数据量有关,轮函数f包含24轮迭代运算,每轮迭代运算包括5步迭代,一般分别起名为θ、ρ、π、χ 和 ι。
今天先到此为止吧,明天继续~
最后
以上就是清新手套为你收集整理的SHA-3算法学习笔记——day1_算法简介。的全部内容,希望文章能够帮你解决SHA-3算法学习笔记——day1_算法简介。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复