哈希算法在数据库安全中应用与防护.pdfVIP

哈希算法在数据库安全中应用与防护.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

讲堂数据结构与算法之美文章详情

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

2018-11-07

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

朗读人:修阳14′29′′|6.64M

还记得2011年CSDN的“脱库”吗?当时,CSDN被,超过600万用户的

邮箱和明文被,很多网友对CSDN明文保存用户行为产生了不满。如果你是

CSDN的一名工程师,你会如何用户这么重要的数据吗?仅仅MD5加密一下就

够了吗?要想搞清楚这个问题,就要先弄明白哈希算法。

哈希算法悠久,业界著名的哈希算法也有很多,比如MD5、SHA等。在我们平时的开发

中,基本上都是拿现成的直接用。所以,我今天不会重点剖析哈希算法的原理,也不会教你如何

设计一个哈希算法,而是从实战的角度告诉你,在实际的开发中,我们该如何用哈希算法解决问

题。

什么是哈希算法?

我们前面几节讲到“散列表”“散列函数”,这里又讲到“哈希算法”,你是不是有点一头雾

水?实际上,不管是“散列”还是“哈希”,这都是中文翻译的差别,英文其实就

是“Hash”。所以,我们常听到有人把“散列表”叫作“哈希表”“Hash表”,把“哈希算

法”叫作“Hash算法”或者“散列算法”。那到底什么是哈希算法呢?

哈希算法的定义和原理非常简单,基本上一句话就可以概括了。将任意长度的二进制值串映射为

固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射得到的二进制

值串就是哈希值。但是,要想设计一个优秀的哈希算法并不容易,根据我的经验,我总结了需要

满足的几点要求:

从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法);

对输入数据非常敏感,哪怕原始数据只修改了一个Bit,最后得到的哈希值也大不相同;

散列的概率要很小,对于不同的原始数据,哈希值相同的概率非常小;

哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。

这些定义和要求都比较理论,可能还是不好理解,我拿MD5这种哈希算法来具体说明一下。

我们分别对“今天我来讲哈希算法”和“jiajia”这两个文本,计算MD5哈希值,得到两串看

起来毫无规律的字符串(MD5的哈希值是128位的Bit长度,为了方便表示,我把它们转化成

了16进制编码)。可以看出来,无论要哈希的文本有多长、多短,通过MD5哈希,得到

的哈希值的长度都是相同的,而且得到的哈希值看起来像一堆随机数,完全没有规律。

代码

MD5(今天我来讲哈希算法)=bb4767201ad42c74e650c1b6c03d78fa

MD5(jiajia)=cd611a31ea969b908932d44d126d195b

我们再来看两个非常相似的文本,“我今天讲哈希算法!”和“我今天讲哈希算法”。这两个文

本只有一个感叹号的区别。如果用MD5哈希算法分别计算它们的哈希值,你会发现,尽管只有

一字之差,得到的哈希值也是完全不同的。

代码

MD5(我今天讲哈希算法!)=425f0d5a917188d2c3c3dc85b5e4f2cb

MD5(我今天讲哈希算法)=a1fb91ac128e6aa37fe42c663971ac3d

我面也说了,通过哈希算法得到的哈希值,很难反向推导出原始数据。比如上面的例子中,

我们就很难通过哈希值“a1fb91ac128e6aa37fe42c663971ac3d”反推出对应的文本“我今天

讲哈希算法”。

哈希算法要处理的文本可能是各种各样的。比如,对于非常长的文本,如果哈希算法的计算时间

很长,那就只能停留在理论研究的层面,很难应用到实际的软件开发中。比如,我们

文档评论(0)

159****9610 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6044052142000020

1亿VIP精品文档

相关文档