SHA-3标准(NIST.FIPS.202)阅读笔记

标准相关信息

  • 编号:NIST FIPS 202
  • 名称:SHA-3标准:基于置换的哈希与可扩展输出函数(SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions)

操作基本设计

操作单元

  • 三维数据向量,5 * 5 * w(w为2的方幂)bit
  • SHA-3中取w = 64,故数据向量总大小为1600bit
  • l = log w / log 2,对于SHA-3,l = 6

标记法

  • x:横向,中心为原点,左至右方向,3 4 0 1 2
  • y:纵向,中心为原点,下至上方向,3 4 0 1 2
  • z:面向,最前端为原点,前至后方向,0 1 2 ... w-1
  • A[x, y, z]:表示在位置(x, y, z)的位
  • S[n]:表示将整个数据向量展开为序列时位置为n的位

命名

  • 零维
    • 位(Bit):具体位置
  • 一维
    • 行(Row):横向序列
    • 列(Column):纵向序列
    • 陆(Lane):面向序列
  • 二维
    • 面(Plane):xz平面
    • 片(Slice):xy平面
    • 表(Sheet):yz平面
  • 三维
    • 态(State):整体数据

存储顺序

  • z -> x -> y,即A[x, y, z] = S[w * (5 * y + x) + z]

序列到态的转换

  • 将位拼合成陆
  • 将陆拼合成面
  • 将面拼合成态

基本算法设计

theta代换

  • 列间的代换操作
  • 对于列中每一位,提取其左列与右前列的总异或值进行异或

rho置换

  • 陆内的置换操作
  • 陆(1, 0)开始操作,并记操作数t = 0
    • 使陆内所有位循环向后移动(t + 1)(t + 2) / 2
    • 陆(x, y)改到陆(y, (2x + 3y) mod 5),并使t = t + 1,重复上述操作直至操作24次为止
  • 笔者注:陆(0, 0)不发生改变

pi置换

  • 陆间的置换操作
  • 陆(x, y)移至陆((x + 3y) mod 5, x)
  • 笔者注:陆(0, 0)不发生改变

chi代换

  • 行内的代换操作
  • 对于行中每一位,取下一位的反与再下一位进行与操作,并与本位进行异或

iota代换

  • 陆(0, 0)的代换操作
  • 额外输入i_r(轮参数,后续会说明该参数的取值)
  • 轮位计算函数rc()
    • 类似线性反馈移位寄存器LFSR
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值