没有合适的资源?快使用搜索试试~ 我知道了~
21丨哈希算法(上):如何防止数据库中的用户信息被脱库?1
需积分: 0 0 下载量 75 浏览量
2022-08-03
13:55:41
上传
评论
收藏 5.27MB PDF 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/86284603/0001-c4ff9ba2daa10364fdb061bad625a717_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
13页
"哈希算法在数据库安全中的应用" 哈希算法是数据库安全中非常重要的一部分,其主要应用是在存储用户密码时,防止数据库中的用户信息被脱库。哈希算法可以将用户密码转换为固定长度的字符串,即哈希值,从而保护用户密码的安全。 哈希算法的定义是将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。哈希算法的设计需要满足一定的要求,如输入数据敏感、输出哈希值不可逆、散列冲突概率小等。 在实际的开发中,哈希算法有很多应用,如安全加密、唯一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储等。其中,安全加密是哈希算法最常用的应用之一,哈希算法可以保护用户密码的安全,防止数据库中的用户信息被脱库。 哈希算法的执行效率也很重要,针对较长的文本,也能快速地计算出哈希值。比如,MD5 哈希算法可以快速地计算出哈希值,即使是非常长的文本。 哈希算法在安全加密中的应用非常广泛,如MD5 和SHA 等都是常用的哈希算法。这些哈希算法满足了安全加密的要求,如输入数据敏感、输出哈希值不可逆、散列冲突概率小等。 哈希算法的应用还可以扩展到别的领域,如数据校验、散列函数、负载均衡、数据分片、分布式存储等。哈希算法可以帮助我们更好地保护用户数据的安全,防止数据库中的用户信息被脱库。 在实际的开发中,我们需要选择合适的哈希算法,满足不同的应用场景。哈希算法的选择需要考虑到安全性、执行效率、可扩展性等因素。 哈希算法在数据库安全中的应用非常广泛,哈希算法可以保护用户密码的安全,防止数据库中的用户信息被脱库。选择合适的哈希算法,可以帮助我们更好地保护用户数据的安全。
资源详情
资源评论
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/86284603/bg1.jpg)
21 | 哈希算法(上):如何防止数据库中的用户信息被脱库?
2018-11-07 王争
数据结构与算法之美
进入课程
讲述:修阳
时长 14:29 大小 6.64M
还记得 2011 年 CSDN 的“脱库”事件吗?当时,CSDN 网站被黑客攻击,超过 600 万用
户的注册邮箱和密码明文被泄露,很多网友对 CSDN 明文保存用户密码行为产生了不满。
如果你是 CSDN 的一名工程师,你会如何存储用户密码这么重要的数据吗?仅仅 MD5 加
密一下存储就够了吗? 要想搞清楚这个问题,就要先弄明白哈希算法。
哈希算法历史悠久,业界著名的哈希算法也有很多,比如 MD5、SHA 等。在我们平时的开
发中,基本上都是拿现成的直接用。所以,我今天不会重点剖析哈希算法的原理,也不会教
你如何设计一个哈希算法,而是从实战的角度告诉你,在实际的开发中,我们该如何用哈希
算法解决问题。
什么是哈希算法?
下载APP
![](https://csdnimg.cn/release/download_crawler_static/86284603/bg2.jpg)
我们前面几节讲到“散列表”“散列函数”,这里又讲到“哈希算法”,你是不是有点一头
雾水?实际上,不管是“散列”还是“哈希”,这都是中文翻译的差别,英文其实就
是“Hash”。所以,我们常听到有人把“散列表”叫作“哈希表”“Hash 表”,把“哈
希算法”叫作“Hash 算法”或者“散列算法”。那到底什么是哈希算法呢?
哈希算法的定义和原理非常简单,基本上一句话就可以概括了。将任意长度的二进制值串映
射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到
的二进制值串就是哈希值。但是,要想设计一个优秀的哈希算法并不容易,根据我的经验,
我总结了需要满足的几点要求:
这些定义和要求都比较理论,可能还是不好理解,我拿 MD5 这种哈希算法来具体说明一
下。
我们分别对“今天我来讲哈希算法”和“jiajia”这两个文本,计算 MD5 哈希值,得到两
串看起来毫无规律的字符串(MD5 的哈希值是 128 位的 Bit 长度,为了方便表示,我把它
们转化成了 16 进制编码)。可以看出来,无论要哈希的文本有多长、多短,通过 MD5 哈
希之后,得到的哈希值的长度都是相同的,而且得到的哈希值看起来像一堆随机数,完全没
有规律。
我们再来看两个非常相似的文本,“我今天讲哈希算法!”和“我今天讲哈希算法”。这两
个文本只有一个感叹号的区别。如果用 MD5 哈希算法分别计算它们的哈希值,你会发现,
尽管只有一字之差,得到的哈希值也是完全不同的。
从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法);
对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同;
散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小;
哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。
1
2
MD5(" 今天我来讲哈希算法 ") = bb4767201ad42c74e650c1b6c03d78fa
MD5("jiajia") = cd611a31ea969b908932d44d126d195b
复制代码
复制代码
![](https://csdnimg.cn/release/download_crawler_static/86284603/bg3.jpg)
我在前面也说了,通过哈希算法得到的哈希值,很难反向推导出原始数据。比如上面的例子
中,我们就很难通过哈希值“a1fb91ac128e6aa37fe42c663971ac3d”反推出对应的文
本“我今天讲哈希算法”。
哈希算法要处理的文本可能是各种各样的。比如,对于非常长的文本,如果哈希算法的计算
时间很长,那就只能停留在理论研究的层面,很难应用到实际的软件开发中。比如,我们把
今天这篇包含 4000 多个汉字的文章,用 MD5 计算哈希值,用不了 1ms 的时间。
哈希算法的应用非常非常多,我选了最常见的七个,分别是安全加密、唯一标识、数据校
验、散列函数、负载均衡、数据分片、分布式存储。这节我们先来看前四个应用。
应用一:安全加密
说到哈希算法的应用,最先想到的应该就是安全加密。最常用于加密的哈希算法是
MD5(MD5 Message-Digest Algorithm,MD5 消息摘要算法)和SHA(Secure Hash
Algorithm,安全散列算法)。
除了这两个之外,当然还有很多其他加密算法,比如DES(Data Encryption Standard,
数据加密标准)、AES(Advanced Encryption Standard,高级加密标准)。
前面我讲到的哈希算法四点要求,对用于加密的哈希算法来说,有两点格外重要。第一点是
很难根据哈希值反向推导出原始数据,第二点是散列冲突的概率要很小。
第一点很好理解,加密的目的就是防止原始数据泄露,所以很难通过哈希值反向推导原始数
据,这是一个最基本的要求。所以我着重讲一下第二点。实际上,不管是什么哈希算法,我
们只能尽量减少碰撞冲突的概率,理论上是没办法做到完全不冲突的。为什么这么说呢?
这里就基于组合数学中一个非常基础的理论,鸽巢原理(也叫抽屉原理)。这个原理本身很
简单,它是说,如果有 10 个鸽巢,有 11 只鸽子,那肯定有 1 个鸽巢中的鸽子数量多于 1
个,换句话说就是,肯定有 2 只鸽子在 1 个鸽巢内。
有了鸽巢原理的铺垫之后,我们再来看,为什么哈希算法无法做到零冲突?
1
2
MD5(" 我今天讲哈希算法!") = 425f0d5a917188d2c3c3dc85b5e4f2cb
MD5(" 我今天讲哈希算法 ") = a1fb91ac128e6aa37fe42c663971ac3d
剩余12页未读,继续阅读
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar](https://profile-avatar.csdnimg.cn/13ad76cee0b9437faa5b6e3a65e0d563_weixin_35767338.jpg!1)
亚赛大人
- 粉丝: 27
- 资源: 332
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论0