zoukankan      html  css  js  c++  java
  • nist-sha

    nist目前支持的sha运算,sha1系列,输出mac160bit。

                sha2系列,支持sha2-224,sha2-256,sha2-384,sha2-512,sha2-512/224,sha2-512/256

                sha3系列,支持sha3-224,sha3-256,sha3-384,sha3-512

    sha1和sha2系列的算法,支持最大的message长度,block size的大小,输出digest的size。

      

    sha1和sha2的算法类似,都分为preprocessing和迭代运算两部分。NIST的标准为FIPS 180-4

      1) preprocessing,padding message,将message分为512,或者1024bit的整数倍。

       512bit的block,最后64bit表示message的长度,1024bit的block,最后128bit表示message的长度

        

      2) 迭代运算,迭代开始init vector,H

        sha1,是5个32bit的word组成的向量,

        512bit的block,是8个32bit的word组成的向量,

          1024bit的block,是8个64bit的word组成的向量。

       迭代过程中,存在a-f的8个中间变量,由H初始化

       每个block的数据被分为64个或者80个word,在经过64轮或者80轮迭代,更新a-f这几个中间变量。

          输出最终的a-f的中间变量的值作为hash digest的值。

    sha3系列算法,采用的engine内核不同于sha2,而是基于Keccak-p[b,nr]的置换-------sponge压缩算法

      sponge压缩算法,分为absorb和squeeze两部分,absorb进行数据的迭代压缩,squeeze生成指定长度的digest

    sponge压缩算法的输入Sponge[f, pad(r, len(N)), r](N,d):

      1) input string,可以是byte流也可以是bit流,注意sha3中的byte流和bit流的转换,高低位置是相反的。0x80对应0b'0000_0001。

      2) padding function,SHA3采用10*1的bit流的方式来padding。padding之后的string len是r的整数倍。

      3) rate,r+c = b。

      4) f,表示算法每次块的处理长度,处理长度为b。

        

    sha3运算中的核心engine,Keccak-p[b, nr]其中b表示每次置换的bits的长度,NIST给出的标准只有七种选择。25,50,100,200,400,800,1600。

        由b的值可以得到两个变量,w表示state的z轴,w = b/25

                      l表示算法需要迭代的次数,l = log2w。

    Keccak-p[b, nr]算法的输入是一个三维的5*5*w的三维矩阵。每次的置换运算中,包括5个小的运算。

      Keccak-p[b, nr]的算法流程:

        

        

    Keccak-f系列的算法是Keccak-p算法中的一大类,其中nr = 12 + 2l,而sha3采用的Keccak算法正是该系列下的b = 1600的系列

      sha3算法的置换部分的engine为Keccak-p[1600,24]

    sha3的算法表示,N表示输入的最原始的bit字符串,d表示输出的string的长度。并且规定c = 2d

    Keccak[c](N, d) = Sponge[Keccak-p[1600,24], pad 10*1, 1600-c](N, d)

    sha3的其中四种运算,需要在M之后加01,之后padding。另外的shake运算,需要在M之后加1111。

      

       

      其中各个算法中的r*8为(可以通过1600-2d)/8得到

        

    总结:

    sha3运算首先将input string pad 为一个5*5 state,各个block块,以1600bit分组,进行absort操作,每次调用Keccak算法24次

      之后进行squeezing操作

    sha3中的10*1的bit pading方法,对应到byte string中,表示为:(其中q为r - m/ mod r,r为byte表示的长度)

      

    针对nist approve的各个hash algm,他们的安全等级分别为:

      

  • 相关阅读:
    php命令注入
    mysql事物
    安装php环境
    移除服务器缓存实例
    show user profile synchronization tools
    manual start user profile import
    JSON is undefined. Infopath Form People Picker in SharePoint 2013
    asp.net web 应用站点支持域账户登录
    Load sharepoint envirement by powershell
    sharepoint 2016 download
  • 原文地址:https://www.cnblogs.com/-9-8/p/9645069.html
Copyright © 2011-2022 走看看