什么是哈希算法
前面我们学习了散列表,散列函数,和哈希算法啥关系?其实不管散列还是哈希,都是翻译的差别,对于英文都是hash,所以散列=哈希=hash
哈希算法的定义
将任意长度的二进制串映射为固定长度的二进制串,这种映射规则就是哈希算法。通过原始数据映射成的规定固定长度的二级制串就是哈希值一个优秀的哈希算法应该满足以下几个要求:
一 哈希值不能反向推导出原始数据
二 对输入数据非常敏感,哪怕原始数据只是修改了一个bit,最后得到的哈希值也不相同
三 散列冲突的概率非常小,对于不同的原始数据,哈希值相同的概率非常小
四 哈希算法的执行效率要非常高效,针对较长的文本,也能快速计算出哈希值
常用的哈希算法
MD5 消息摘要算法
SHA 安全散列算法
DES 数据加密标准
AES 高级加密标准
哈希算法的应用
应用一 安全加密
前面说到哈希算法的四个要求,第一个要求就是为了防止原始数据泄露
应用二 唯一标识
假如现在有1w张图片,需要判断是否存在库里,这个时候我们可以通过MD5 对图片进行信息摘要,把生成的哈希值作为图片的唯一标识,通过对比唯一标识来判断是否在库里
应用三 数据校验
我们可以取出文件的哈希值,判断文件的完整性,因为哈希值第二点要求,对数据非常敏感,哪怕修改了一个bit,哈希值也会不同
应用四 散列函数
前面说过,一个好的散列函数,决定了散列冲突的概率和散列表的性能