hash算法

发布时间 2023-07-29 17:42:52作者: 挖洞404

1、介绍

hash算法是把任意长度的输入处理为固定长度的输出,该输出称为散列值或者hash值。

1.1 特点

多对一映射:由于输入有无限种可能,而输出有限,则必然是多对一

不可逆转:基于多对一映射,所以无法基于输出获取输入

1.2 作用

(1)数据校验

比较两个明文的hash值,如果相同,一般认为其明文也相同。如果不同,则必然明文不同。

可以验证明文是否一致,数据的完整性,以及数据防篡改。

(2)负载均衡

优秀的hash算法,会尽可能将输入平均映射到各个输出。

对于比较,或者按序查找操作,可以极大的提高效率。用于改良相关算法,尤其是数据库和大数据场景。

2、性能评价

优秀的hash算法

(1)无法逆推

一般来说,hash值无法推算其明文

(2)输入输出不相关

微小变化,呈现完全不同的hash值

(3)高效计算hash

(4)映射概率平均

3、hash碰撞

3.1 链地址法

3.2 开放地址法

4、hash算法

md4、md5、sha-1

5、hash函数

(1)直接寻址法

(2)数字分析法

(3)平方取中法

(4)折叠法

(5)随机数法

(6)除留余数法

6、注意

(1)对于token或者登录凭证cookie,不建议使用hash,或者使用hash同时应该增加其它字段,比如用户名。

因为hash是可能重复的,会造成越权

(2)hash并不严格保密

比如将常用的账号、密码等其它数据进行hash转换,再与目标hash值比较,最后逐一测试对应的明文值