`
jiangzhenghua
  • 浏览: 602866 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

什么是MD5,MD5之我所见

    博客分类:
  • MD5
阅读更多
什么是MD5?——MD5之我见
2009/01/14 03:04

MD5的全称为Message Digest Algorithm 5(即信息摘要算法第五版),这个概念十分抽象,而且又不太好理解,其实,MD5说白了就是平时我们所说的文件条形码,简称文件条码。就像商品一样,每个商品都有各自的条形码一样,不同的商品有不同的条形码,同样,对于软件产品(或文件)来说,不同的文件,其文件条形码也不尽相同。可以说,文件条码是文件固有属性之一,就像文件名,文件大小,修改日期等等一样。

MD5的特点
MD5具有哪些特点呢?首先,MD5的唯一性强,能唯一标识一个文件。我们知道商品的条形码是没有重复的,同样,不同的文件也应该有不同的条形码,也就是说,若文件的内容或长度稍有变化,则其文件条码一定会发生巨大的改变。其次,MD5所关注的仅仅是文件的内容本身,而与文件名等其他信息无关,就好比我们到店里买东西一样,外包装不同的物品,但只要其条形码完全一致,我们就可以认定这两样东西是同一产品。

MD5的实质
MD5从本质上来说,他就是一个函数,由于其采用散列算法,所以又称为散列函数,所谓散列,简单地说就是我们前面所提到的唯一性,散列性越高,唯一性越强,发生冲突的几率也就越低。若写成数学函数模型就是y=f(x),其中,x代表的是文件内容,f表示MD5散列函数,而y就是该散列函数的计算结果,也就是平时我们常说的MD5值。回顾计算机函数的基本性质,对于计算机函数来说,一个输入x只能对应一个输出y,而一个输出y可以对应无数个输入x,由此可见,MD5同样也是有一定的冲突的,故而MD5函数具有不可逆性,即无法通过对MD5值反算得到原文件内容,因此,MD5时常也被用作加密用。

早期的文件条码用的是CRC或CRC32,由于其算法快捷,且唯一性高,因此被广泛用于计算机文件的快速校验中,进而成为第一代文件条码,随着软件的规模不断扩大,文件数量的不断巨增,长度仅有8位数的CRC远不能胜任,于是第二代文件条码诞生了,这便是MD5,他具有32位数,能唯一标识更多的文件,虽说在算法速度上稍逊于CRC,但其数位长,唯一性高,最主要就是其源代码在网上是公开发表的,可以很容易地得到并集成到现有的任意程序中,故而受到广大网友的青睐,因此我认为,在不久的将来MD5很有可能成为文件条码的行业标准。

MD5的应用
MD5最早开发的初衷就是用于密码加密的,但后来据说被中国的某个王教授给破解了,故而其加密价值就没有了。现在的MD5最大的作用便是前面我们提到的文件识别。在此,我想先举个生活中的例子,以前我们到超市里买东西,由于那时候超市的发展才刚起步,东西不多,所以买东西时,只要看一下商品名称以及所对应的价格就可直接去付账了,而现在却不行了,超市里的东西越来越多,东西随处乱放,若还像以前一样只看商品名称就决定买下来的话是不行的,若不看条形码很是难保证你买的东西和你看到的价格是一致的,我就上过好几回当,买错东西,现在学聪明了,买东西前要看条形码,不看商品名。现在回过来,我们继续说文件,例如,平时我们经常喜欢在网上下载一些东西,在以前,若从网上下载一个文件,我们往往只能看到其文件名,没有条形码,某些好点的网站最多还给你看一些文件大小,但不具体如几MB,随后我们便下载了,然后隔几天又在其他网站上看到另一个相似的“更好的”文件,然后也把它给下了,下好以后才发现原来这两个文件其实是一样的,这才大呼上当,文件小点倒无所谓,如果文件很大,动则数G,若下了两份一样的文件,光财力上不说,你时间精力要花费多少呢?而现在的下载,如果有MD5或文件条形码在的话,我们通过比较它们的条形码,便可以知道这是否为同一软件产品,以免再次重复下载,造成不必要的损失。当然,MD5还有其他许多用处,这里就不说了。

当然,有的网站还是用CRC作为条码,或使用SHA1,一个和MD5差不多的散列函数,但其代码很难弄到,没有权威发布网站,故而用的不是很广泛。更有甚者,有的网站还有自己的散列函数,像eMule等,那仅仅只是特例,而网上我看得最多便是MD5,由于其源代码通俗易懂,所以我大胆预测,其成为行业标准的可能性很高。

分享到:
评论

相关推荐

    MD编辑器Typora

    MD编辑器Typora是一款专为Markdown语言设计的高效、简洁且直观的文本编辑工具。Markdown是一种轻量级的标记语言,允许用户通过简单的符号来排版文本,如`#`代表标题,`*`和`_`用于斜体和粗体,`> `表示引用等。...

    editor.md_master1.zip

    5. **多语言支持**: `editor.md` 支持多种语言,包括中文,英文等,这使得全球范围内的用户都能方便地使用。 6. **API 接口**: 提供了丰富的 API 接口,开发者可以轻松地将 `editor.md` 集成到自己的项目中,实现与...

    富文本解析,折线图,MD5,bluebird

    富文本解析、折线图绘制、MD5哈希计算以及Bluebird Promise库是现代网页设计中的四个关键概念,它们在构建交互式、安全且高效的应用程序时起着至关重要的作用。 首先,富文本解析(Rich Text Parsing)是处理包含...

    mac中文版md神器typora

    1. **实时预览**:Typora采用了所见即所得的编辑模式,意味着你在编辑Markdown代码的同时,预览区域会即时反映出格式化后的效果,无需频繁切换查看预览。 2. **跨平台支持**:尽管这里讨论的是Mac中文版,Typora...

    md-wysiwyg-editor:“ Markdown所见即所得编辑器”(临时名称)是一个简单的Web富文本格式所见即所得markdown编辑器

    Markdown所见即所得编辑器 “ Markdown WYSIWYG编辑器”(占位符名称)是一个简单的Web RTF / WYSIWYG markdown编辑器,以JavaScript,HTML和CSS编写。 它是由和 ,各种markdown-HTML转换引擎( , 和 )以及新的 ...

    MD编辑工具 typora windows64位安装包

    MD编辑工具Typora是一款流行的Markdown编辑器,专为Windows 64位操作系统设计。Markdown是一种轻量级的标记语言,允许用户使用简单的符号来排版文本,如`#`用于标题,`*`或`_`用于斜体和粗体,`>`用于引用等。Typora...

    Md文件编辑器....

    Markdown(Md)文件编辑器是一种专门用于编写Markdown格式文本的工具。Markdown是一种轻量级的标记语言,通过简单的符号约定,使用户能够快速地排版和格式化文本,广泛应用于编写文档、博客、笔记等场景。它易于学习...

    md文件查看(typora).zip

    Typora是一个所见即所得的Markdown格式文本编辑器,支持Windows操作系统,包括对GitHub Flavored Markdown扩展格式的支持、拼写检查、自定义CSS样式、数学公式渲染(通过MathJax)等特性。 官网下载有点慢,所以我做...

    markdown语法.md

    Markdown是一门比html更简单的标记...如果你是一个作家,或者是一个程序员,Markdown对你来说是一门必备的技能。掌握Markdown真的很简单,如你所见,这篇文章使用了这么短的篇幅就已经将Markdown的语法全部介绍完了。

    html2md:helloworld开发者社区开源的一个轻量级,强大的html一键转md工具,支持多平台文章一键转换

    :party_popper: Html2md :partying_face: html2md是由开源的一个轻量级功能强大的html转md工具:flexed_biceps_light_skin_... 一种基于Vue的markdown编辑器,支持所见即所得 强大的Css预处理器之一 使用 初步:下载 g

    HyperMD一个所见即所得的浏览器Markdown编辑器

    **HyperMD:所见即所得的Markdown编辑器** HyperMD是一个强大的开源编辑器,专为在浏览器环境中提供高效、实时的Markdown写作体验而设计。它打破了传统的Markdown编辑器中的写作与预览分离模式,实现了“所见即所得...

    Typora程序员专用的md文档编写器

    而Typora,就是一款专为程序员设计的Markdown编辑器,被誉为程序员最喜欢的Markdown编辑器之一。 Typora提供了一个无干扰的全屏写作环境,它的最大特点在于实时预览功能。用户在编辑Markdown文本时,可以即时看到...

    Typora MD编辑器

    1. **实时预览**:与传统的Markdown编辑器不同,Typora采用所见即所得(WYSIWYG)的方式,让用户在编写时可以即时看到格式化后的效果,无需在源代码和预览模式之间反复切换。 2. **简洁界面**:Typora的设计理念是...

    MD编辑工具Typora

    MD编辑工具Typora是一款专为Markdown语言设计的高效编辑器,它以其简洁的用户界面和实时预览功能深受用户喜爱。Markdown是一种轻量级的标记语言,使得人们能以易读易写的纯文本格式编写文档,同时又能方便地转换成...

    MarkText MD编辑器

    "MarkText MD编辑器"是一款开源的Markdown编辑器,它采用了所见即所得(WYSIWYG)的设计理念,使得用户在编写Markdown文档时能够实时预览文本效果,极大地提升了编写体验。Markdown是一种轻量级的标记语言,常用于...

    md笔记软件备份最新版本

    例如,Typora是一个知名的Markdown编辑器,它提供了无缝的所见即所得(WYSIWYG)编辑体验,让用户可以实时预览Markdown格式的效果。 "typora-update-x64-1117.exe"这个文件名可能是Typora编辑器的一个更新程序,...

    Typora - md文件免费编辑/阅览工具

    1. **实时预览**:Typora提供了一种无缝的编辑模式,称为“所见即所得”(WYSIWYG)。当你输入Markdown语法时,预览会实时更新,使得编辑过程更加直观。 2. **简洁界面**:软件设计简洁,无干扰的界面使得用户可以...

    md工具奥术股份VSUI大夫is打包

    标题中的“md工具奥术股份VSUI大夫is打包”似乎是指一个关于Markdown编辑器的比较,其中提到了“奥术股份”和“UI大夫is”的打包版本。在IT行业中,Markdown(简称md)是一种轻量级的标记语言,用于编写文档、笔记或...

    java开源包7

    用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC框架 nfs-rpc nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用...

    程序员5个刷题网站-Resume.md:我的Markdown简历-PersonalResume.md

    程序员5个刷题网站介绍 王帅, 25 岁, 3 年经验, 前端开发, 辽宁- 沉阳 本科 邮箱: 微信: wangdapishuai 电话: 18512416861 参与开源项目的前端开发 希望参与: 1. 前端多端 2. 可视化, 所见即所得 3. WebGL 可以独立...

Global site tag (gtag.js) - Google Analytics