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 算法计算过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南