世界十大算法就包含Hash算法,Hash的应用在编程领域无处不在。
1.到底是什么是Hash?
hash哈希是音译,本意是剁碎的食物[散列],输入一些信息将其捣碎后输出出来
通过散列算法,变换成固定长度的输出,该输出就是散列值
1.1 如果你是快递超市老板,你是怎么给快递安排货架?
- 取件码
2)存取基于相同的规则
3)分布均匀
4)取件码=》位置
把某个对象映射到某个地方 叫做 Hash
hashMap MD5都是hash
2.怎么设计Hash算法?
hash值理论上是可重复
但就像指纹那样,特别的小
hash函数是什么 杂凑函数 hash=Hash(m),
将一个长度输出成一个固定的值,
可以成hash值成摘要或指纹
hash算法应该有以下特性
1.确定性
2.不可逆(单向)
3.分散性(敏感性)
4.压缩性
3.MD5是怎么被“破解”的?
MD5的hash算法不是+-*/,是不可逆的
因为MD5在运算的时候已经彻底丢失了某种信息
就像位运算右移 101010 => 010101
那么为什么还是有MD5的密码被破解呢
那是因为hash值具有确定性,可以通过建立MD5密码,对密码进行两两比较
4.Hash可以用来干什么?
文件校验
签名