http://www.williamlong.info/archives/3229.html 

MD5即Message-Digest Algorithm 5(信息-摘要算法 5),是网络上广泛使用的散列(Hash)算法之一,可以实现将任意长度的数值映射为固定长度的较小数值。

  MD5是一种常用的单向Hash算法。它被广泛用于以下几个用途:

  1、检查数据是否一致。将两地存储的数据进行哈希,比较结果,如果结果一致就无需再进行数据比对。这是利用了其“抵抗冲突”(collision- resistant)的能力,两个不同的数据,其哈希值只有很小的几率一致。相当多数据服务,尤其是网盘服务,利用类似的做法来检测重复数据,避免重复上传。

  2、存储用户密码。将密码哈希后的结果存储在数据库中,以做密码匹配。这是利用了其做为单向哈希的特点,从计算后的哈希值不能得到密码。

  3、校验数据正确性。将数据和数据哈希后的结果一并传输,用于检验传输过程中数据是否有损坏。这是利用了很难找到两个不同的数据,其哈希结果一致的特点。

  下面我们将说明为什么对于上面三种用途, MD5都不适用。

  第一个用途尤其可怕。这个用途的最大的问题是,MD5在现实中已经被发现有相当多的数据都可能导致冲突。举例而言,如下两段数据的MD5哈希值就是完全一样的。

数据 1

4d c9 68 ff 0e e3 5c 20 95 72 d4 77 7b 72 15 87
    d3 6f a7 b2 1b dc 56 b7 4a 3d c0 78 3e 7b 95 18
    af bf a2 00 a8 28 4b f3 6e 8e 4b 55 b3 5f 42 75
    93 d8 49 67 6d a0 d1 55 5d 83 60 fb 5f 07 fe a2

数据 2

4d c9 68 ff 0e e3 5c 20 95 72 d4 77 7b 72 15 87
    d3 6f a7 b2 1b dc 56 b7 4a 3d c0 78 3e 7b 95 18
    af bf a2 02 a8 28 4b f3 6e 8e 4b 55 b3 5f 42 75
    93 d8 49 67 6d a0 d1 d5 5d 83 60 fb 5f 07 fe a2

输出相同的MD5 哈希

008ee33a9d58b51cfeb425b0959121c9

  这意味着,如果用户提供数据 1,服务器已经存储数据 2。通过简单的MD5哈希方式检查重复,服务器上为用户保存的数据就是2。 接下来发生的事情大家都知道了,就是用户数据丢了!

  第二个用途很容易遭到rainbow table攻击,和明文存储密码的实质区别不大。更详细的分析可以察看这篇文章。

  第三个用途里一般会在需要哈希的数据中混入某些秘密,也就是计算公式为md5(secret key + data)。 但这样并不适合用于验证数据的完整性。这是因为,从理论上上来说,如果知道md5(secret key +X),即使不知道secret key的内容, 仍然可能通过对X的分析,计算得到md5(secret key +Y),从而将X成功的替换成Y,导致接收方仍然认为数据是正确的。

  来源:坚果云投稿,坚果云是一款类似Dropbox的云存储服务。

为什么应该放弃或减少使用MD5相关推荐

  1. 技术以外的功夫 ----作者:李天平

    记得看过冯仑的"赚钱以外的功夫"有感而发,写写我们IT人技术以外的功夫.     有时候发现做技术做长了,很多的人的性格都会发生变化,变得内向,变得封闭.有的会发现市场团队的开会, ...

  2. 李天平: 技术以外的功夫

    记得看过冯仑的"赚钱以外的功夫"有感而发,写写我们IT人技术以外的功夫.     有时候发现做技术做长了,很多的人的性格都会发生变化,变得内向,变得封闭.有的会发现市场团队的开会, ...

  3. 【墨尘】变态心理学(北京大学)

    序言 为什么要学这个?我也不明白,我想多半是闲的蛋疼 墨尘 2023-04-09 1.变态心理学概论 1.1 概述 变态心理学(Abnormal Psychology),也译为异常心理学,是心理学的一 ...

  4. 李天平:技术以外的功夫

    这个社区大部分都是学生,且大部分都是为了学技术而来,很多人也许还没有太多职业经历,所以下面这篇以前写的非技术性文章,也许能给大家一点不同的提示和启发. 记得看过冯仑的"赚钱以外的功夫&quo ...

  5. 初创企业该追求盈利还是高估值

    编者注:本文来自美国非常著名的投资人弗雷德·威尔森(Fred Wilson)个人博客AVC,中文版由天地会珠海分舵进行编译.全文对当今投资界和创业界盛行的盲目追求企业的快速增长以便获得一个更高的估值而 ...

  6. 人生的机会成本(博弈论的诡计)

    东汉陈著,字仲举,少年时期曾经在外地求学,独居一室,整天读书交友而顾不上收拾屋子,院子里长满杂草.在一次,他父亲的朋友薛勤前来看望他,问他:"你为什么不把院子打扫干净来迎接宾客呢?" ...

  7. 谷歌 Core Web Vitals:SEO页面速度优化指南

    什么是核心网页指标? Google 关注的是真实的体验指标,比方说:页面加载速度有多快?它的交互速度有多快?它有多稳定?当访问者在移动设备或桌面设备上访问网页时,在速度方面的体验是怎样的,他们与它交互 ...

  8. 渠道、裂变、留存,App获客增长转化方案

    在移动互联网产品的运营体系中,App的用户增长与流量转化是相当重要的运营方向.但近年来由于互联网生态的马太效应以及流量红利见底,许多应用往往投放大量渠道,新增用户的增长率却持续下跌,获取新用户的成本直 ...

  9. 管理经济学-笔记(非常详细)

    <管理经济学>整理 绪 论 P3 管理经济学的对象和任务 一.管理经济学的研究对象,以及与微观经济学之间的联系和区别: P3-P4 识记 借用理论 共同之处 不同之处 研究对象 对企业目标 ...

最新文章

  1. fragment之间通信
  2. apache php mysql下载_linux+apache+php+mysql 安装
  3. mongoose 数据库设计千万要注意 Cast to [number] failed for value
  4. mysql php教程,MySQL PHP语法
  5. python easygui_Python里的easygui库
  6. Linux下查看串口信息
  7. oracle插入时间报错,Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法...
  8. toad软件 insert批量操作_AE创建、PR制作,动态字幕跨软件也能批量操作
  9. 别人在加薪,你却在加班?快到这里和聪明的小伙伴一起充电吧!
  10. Python HTTP Error 403: Forbidden
  11. python循环控制语句将数值转化成字符串_python基础入门详解(文件输入/输出内建类型字典操作使用方法)...
  12. 常见的几种网络抓包及协议分析工具
  13. 如何成为一名数据分析师 | 推荐收藏
  14. 金融二叉树模型-给期权定价
  15. Foxmail如何设置?
  16. 软考高级证书考试--信息系统项目管理师--计算题(更新中)
  17. 4个方法:提升用户活跃度
  18. FSA(有限状态自动机)python代码实现 自然语言处理作业
  19. macbookpro 2021 各种软件设置中找不到麦克风权限问题
  20. 「Adobe国际认证」运用“对象选择”工具,在PS中快速建立选区

热门文章

  1. 06--MySQL自学教程:DML(Data Manipulation Language:数据库操作语言),只操作表
  2. java商城管理系统ssm_基于SSM+MYSQL的一个小型商城网站后台管理系统
  3. Docker私有仓库的搭建
  4. [转]opensuse vim 的语法高亮
  5. php mysql $_php中mysql语句的基本写法
  6. 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解
  7. jenkins php build,PHP+Jenkins 持续集成
  8. linux搜索文件为1kb,Linux常用命令
  9. 思科设备故障检测检查表
  10. 有一种惨:人还在,数据没了...