hash 算法计算过程

2022/4/28 9:14:45

本文主要是介绍hash 算法计算过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MD5(128位) ,sha1(160),sha256(256位) 都是用户hash算法,任意长度的字符串 通过哈希运算以后都会得到一个固定长度的摘要,并且其中任意一个字符的变动都会导致hash完全改变。

 

用sha1举例:sha1 要求 原文长度低于2^64次方位(很大了,4G 内存是 512M 的内存是 2^32次方位 )

  1 把原文对齐,第一位补1,后面补0,最后原文的长度(64位二进制表示的长度),使它是512的N倍。

  2然后把512位小段分成 16*32 段。

  3在把这16小段扩充成80*32的小段。

    扩充过程:前16 位就用原来的16个

         W16-W79 使用公式计算,Wt=(  W(t-3) ~ W(t-8)~W(t-14)~W(t-16)  )<<1   ,t表示第几位,~表示异或  ,<<1  表示左移一位

  4然后把进行80轮的运算得到160位的哈希值。如果是上面的N=1,那么就是最后的结果,如果不是那就就把这个哈希值带到第二段去计算,知道最后一段输出160位的哈希为最终的结果。

      80轮运算过程:

        1,有5个8位16进制的初始变量,a,b,c,d,e,加起来就是一个160位的初始哈希。

        2, 80轮运算的过程

          for t=0-79

            T=a<<5+f(a,c,d)(这个函数是通过不同的t值来决定运算公式)+e+Kt(根据t的区间取得常量值)+Wt

            e=d

            d=c

            c=b<<30

            b=a

               a=T

       3,计算玩80轮运算以后的到的 a,b,c,d,e 连起来就就是一个160位IDE哈希,如果N >1 ,那么继续下一个512 区间的计算,直到最后一个

  



这篇关于hash 算法计算过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程