我是靠谱客的博主 清新手套,最近开发中收集的这篇文章主要介绍SHA-3算法学习笔记——day1_算法简介。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

由于种种原因,对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,每一种输出长度会对应不同的rc,其定义如下:

摘要长度

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_算法简介。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部