21 | 哈希算法(上):如何防止数据库中的用户信息被脱库?

164 阅读1分钟

什么是哈希算法

  • 基本概念:hash=哈希|散列

  • 定义:将任意长度的二进制值串映射为固定长度的二进制串

  • 需要满足的条件

    • 算法单向
    • 对输入敏感,即使修改一个bit,得到的哈希值也大不相同
    • 散列冲突很小
    • 算法高效,耗时短

应用

1.安全加密

  • 常见的安全加密算法MD5,SHA、DES、AES

  • 重点关注

    • 可以逆向推导原始值 防止数据泄漏
    • 散列冲突很小,并不能完全避免 鸽巢原理(也叫抽屉原理)
  • 时间和安全间进行取舍 

    • SHA-256 比 SHA-1 要更复杂、更安全\

2.唯一标识

  • 获取唯一标识(信息摘要)\

  • hash相同的元素不一定完全相同,需要全量对比

3.数据校验

  • 下载电影,将电影分割成多个块,对每个块进行hash校验
  • hash不同的块,一定是不完整的

4.散列函数

  • 将数据hash后放入不同的桶中
  • 不关注是否可以逆序解开,更关心分布是否均匀

总结

  • 针对密码存储,可以通过在password上加salt后加密,增加复杂度

  • 使用场景

    • 唯一标识
    • 校验数据完整性和正确性
    • 安全加密
    • 散列函数