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

问题:数据库脱库了怎么办, 如何用哈希算法解决问题。

1. 什么是哈希算法?

哈希算法的定义和原理: 将任意长度的二进制值串映射为固定长度的二进制值串。

哈希算法要求:

  • 从哈希值不能反向推导出原始数据
  • 对输入数据敏感,哪怕改一个bit,得到的哈希值也大不相同;
  • 散列冲突的概率要很小;
  • 算法执行要高效。

2. 应用一:安全加密

常用加密算法:MD5,SHA。 除了这些,还有DES,AES。

为什么哈希算法无法做到零冲突?
以MD5为例,哈希值是固定的128位二进制串,最多表示2 ^ 128种数据,如果超过 2 ^ 128 + 1种,一定有两个数算得的哈希值相同。(抽屉原理,10个抽屉,11个东西,一定至少有一个抽屉有两个东西)

3. 应用二:唯一标识

如果要在海量的图库中,搜索一张图是否存在,我们不能单纯地用图片的元信息(比如图片名称)来比对,因为有可能存在名称相同但图片内容不同,或者名称不同图片内容相同的情况。那我们该如何搜索呢?

做法:取图片前100个字节,中间100个字节,后100个字节,算一个哈希值,作为唯一标识,判断图片是否在图库中。

4. 应用三:数据校验

BT下载。将文件分成若干文件块,分别取哈希值,保存在种子文件中。用户下载文件后,计算文件块得到哈希值,与种子文件中的比较,判断文件块不完整或被篡改了。

5. 应用四:散列函数

相对哈希算法,散列函数更加关心散列值是否更加均匀,计算速度是否更快,对散列冲突的容忍度比较高一点。

7.解答开篇

数据库脱裤后,可以使用撞库方法试密码,原因是很多用户的密码设置很简单,比如123456等等。

解决方法:加盐,原始密码加一个盐,组合之后,计算得到的哈希值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值