hash算法
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值比较,最后逐一测试对应的明文值
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战