SHA3浅记

写在前面:
本文思路及部分图片来自《密码编码学与网络安全——原理与实践(第七版)》

零、基本概念

SHA3:一种HASH函数标准。
输入可变长度n bits消息数据,输出固定长度\mathcal l bits 数据

一、算法步骤

输入n bits数据 \rightarrow 填充(padding)\rightarrow分组\rightarrow吸水(absorbing)(分组丢进f函数里后得出的结果与下一分组XOR运算以此迭代)\rightarrow挤压(squeezing)\rightarrow输出l bits数据

注:以上过程亦称为海绵结构

海绵结构图解

二、具体过程

0.填充+分组

(0). 首先定好分组长度r(一般取r=576
(1). 对数据向后填充,使填充后的数据长度可整除r;填充的位数(0,r]
注意区间开闭:即若原先r\ |\ n,也应填充r位数据
(2). 填充后得到n'数据,且r\ |\ n'。分为k=n/r个分组,每个分组有rbits 数据

其中填充的方法

  • 简单填充:n+"10...0"
  • 多重位速率填充:n+"10..1"
    (其实就是最后一位不同)

1.吸水

(0). 每个分组内,rbits数据向后扩充cbits (填充“0”即可),一般c=1024,得b=r+c位的数据
(1). 第一个分组与全零XOR运算后\rightarrow f函数\rightarrow得到s
(2). 第二个分组与s \ XOR运算\rightarrow f函数\rightarrow迭代s
\vdots
以此迭代
(3). 得到 s(b bits)

2.挤压

  • l\leq r ,取slbits 作为输出数据
  • l>r
    (0). 取 srbits 数据 Z_0
    (1). 将 s 丢进f函数迭代以更新 s
    (2). 重复步骤(1)(2),产生数据 Z_0Z_1...Z_n
    直到数据 Z_0Z_1...Z_n 长度大于或等于 l,取前 lbits 数据作为输出结果
    吸水与挤压过程

这个图不科学:r=576,c=1024, 应该画cr长(不要被误解)。

三、吸水挤压过程中的f函数

作用:输入 s=1600bits数据,输出 s'=1600bits数据
过程:共有五个过程;执行顺序依次是 \theta, \rho, \pi, \chi, \iota 。以此循环24轮,输出。

f函数框架

0. 执行前

执行算法前,将 1600bits数据构建成一个 5*5*64 的三维矩阵 a, 其中 5*5 称为行和列,64个位合起来称为一纵。用x为列,y为行,z为纵里的bit坐标
a[x,y,z]标记为一个bit的坐标号,且以左下角为0向上向右坐标标号递增

看以下以3*3*3魔方为例子:

绿色对面蓝色,红色对面橙色,黄色对面白色

黄红绿+红绿+红绿白构成一列
黄红蓝+黄红+黄红绿构成一行
黄红绿+黄绿+黄橙绿构成一纵
记红蓝白(左下角)为坐标 [0,0,0],向上行数增加,向右列数增加,从里向外纵内 值增加;例如:红绿块记为 a[2,1,0],即第二列第一行第零块。同理:纯绿块记为 a[2,1,1]...以此类推。

此步骤的思路可借鉴魔方盲拧构建坐标的方法

注意:计算时所有值应该mod5,加法也是XOR运算

1.\theta 过程(基于列的位代换)

公式:a[x,y,z]=a[x,y,z]XOR \sum^4_{y'=0}a[(x-1),y',z] XOR \sum^4_{y=0}a[(x+1),y',(z-1)]

以魔方为例:


绿色对面蓝色,红色对面橙色,黄色对面白色

纯黄块=纯黄块XOR(黄蓝+纯蓝+蓝白)XOR(黄红绿+红绿+红绿白)

2. \rho 过程(纵内循环位移)

公式:
a[x,y,z]=a[x,y,(z-\displaystyle\frac{(t+1)(t+2)}{2})]
t\in [0,24)$在$GF(5)^{2*2}上有 \begin{bmatrix} 0 & 1\\ 2 & 3 \\ \end{bmatrix}^t \begin{bmatrix} 1\\ 0\\ \end{bmatrix} = \begin{bmatrix} x\\ y\\ \end{bmatrix}(实际上查表可得)
t表如下:

t表

3.\pi过程(纵间混淆)

公式:a[x',y']=a[x,y]
\begin{bmatrix} x'\\ y'\\ \end{bmatrix} = \begin{bmatrix} 0 & 1\\ 2 & 3\\ \end{bmatrix} \begin{bmatrix} x\\ y\\ \end{bmatrix} (mod\ 5)

此步与纵内无关,仅是行和列的计算,可当成二维的运算。计算后结果:


结果

4.\chi过程(基于行的位代换)

公式:
a[x,y,z]=a[x,y,z]XOR(NOT(a[(x+1),y,z))AND(a[(x+2),y,z])
以魔方为例:

绿色对面蓝色,红色对面橙色,黄色对面白色

黄红蓝=黄红蓝XOR黄红XOR黄红绿

5.\iota 过程(第一纵变换)

公式:
a[0,0]=a[0,0]XOR\ RC[i_r]
其中RC为轮常量,查表可得;i_r 为轮序数。
即每一轮计算时,用该轮次的 RC 值与该轮第一纵计算。

轮常量RC表

5个步骤,循环24次(24轮)后输出s

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 1 基础 1.1 对称算法 描述:对称加密是指加密过程和解密过程使用相同的密码。主要分:分组加密、序列加密。 原理...
    御浅永夜阅读 2,360评论 1 4
  • HASH 现在在处理App的用户敏感信息方面,大部分都是采用HASH加密的方式来进行处理。 关于哈希算法 详细看这...
    Phant阅读 11,255评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,718评论 0 10
  • 1、招聘团队 聊了互联网运行人员,和总部一共要11个点的提成,团队自己分配。 2、代理商公司 灵狐新媒体宣传推广,...
    马玉峰阅读 423评论 0 0