免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ MD5
12下一页
最近访问板块 发新帖
查看: 3648 | 回复: 11
打印 上一主题 下一主题

[算法] MD5 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-07 17:54 |只看该作者 |倒序浏览
各位同仁,对MD5算法我有以下几点疑问,不只是小弟out了,还是什么,望各位大神解答:

1.Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。可不可以理解为和CRC校验算法差不都,都是检验数据的正确性的?
2.经常听别人说使用MD5加密,MD5解密,加密算法和消息摘要算法具体有什么联系吗?如果没有联系,为什么会出现这种说法,小弟认为MD5加解密这个说法应该不是无的放矢的;
3.MD5算法不是不可逆的吗?这里的不可逆指的是什么?数据经过MD5算法之后就不能还原了?如果是这样的话这个算法有什么用,貌似没有多大意义啊,不用了直接删除就好了啊;
4.另外,2004年山东大学的教授不是破解了MD5算法么,是不是可以这样认为:在这之后MD5就成可逆的了,换句话说这个时候开始是不是MD5就可以当成加密解密算法来使用了。

求指教啊

论坛徽章:
0
2 [报告]
发表于 2013-01-07 18:05 |只看该作者
MD5 是哈希算法……不是加密算法,虽然很多时候用来加密……

绝对是不可逆的,MD5 的结果是一串 128 位的数据。即使你把整部四库全书 MD5 一下,也是那么 16 字节的数据,所以是不可逆的。

MD5 意思只是对原始数据有很小的改动,取 MD5 哈希的结果也会不同,碰撞率很小。

所谓「破解了 MD5」,指的是知道了如何可以伪造一段数据得到指定的结果。(比如一个系统保存的是 MD5 后的密码,通过判断 MD5 值是否相同来验证密码是否相同。你无法通过 MD5 后的值反推原始密码,但是你可以构造一个密码,使其 MD5 值和原密码的 MD5 值相同。)

论坛徽章:
0
3 [报告]
发表于 2013-01-07 19:13 |只看该作者
timothyqiu 发表于 2013-01-07 18:05
MD5 是哈希算法……不是加密算法,虽然很多时候用来加密……

绝对是不可逆的,MD5 的结果是一串 128 位的 ...


这样的话为什么要用来加密啊,不能得到原有数据,加密没有意义啊

论坛徽章:
0
4 [报告]
发表于 2013-01-07 19:20 |只看该作者
回复 3# liyapeng90


    一个用于某系统登录的账户的密码如果要保存在文件中的话,你觉得是保存原本的好还是md5加密后的好呢

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
5 [报告]
发表于 2013-01-07 19:46 |只看该作者
本帖最后由 Ager 于 2013-01-07 20:09 编辑
liyapeng90 发表于 2013-01-07 19:13
这样的话为什么要用来加密啊,不能得到原有数据,加密没有意义啊


对于MD5来说,“加密”的含义是:你看到密文,但你不知道它的“原文”是什么,严格地说,是你很难知道有哪一串“原文”可以与这串密文对应 —— 这对于某些安全机制来说,已经足够了。

比如:你liyapeng开了一个论坛,叫做《李亚鹏之家》。而后,用户我ager来《李亚鹏之家》注册了一个ID,并设定了一串密码。

如果这串密码在你的论坛程序中,用明文保存,那么作为管理员的你liyapeng,就可以看到我的这串密码,你就会想:嘿嘿,ager的网银密码是不是也是这个呀 ……

这样一来,用户的隐私就暴露在了论坛管理员的面前。

有鉴于此,大多具有公信力的论坛程序,都采用了MD5或类似机制“加密”用户设定的密码,即将用户我ager所设定的密码用MD5加密,然后保存在《李亚鹏之家》论坛的数据库中。

在这种情况下,管理员你liyapeng即使在数据库后台,也只能看到一串特定长度的密文,而很难知道我的密码原文是啥。

俟后,当用户我ager再次登录《李亚鹏之家》,此时,论坛程序将我登录时输入的密码,经过与之前MD5加密方法一致的方法加密,那么就会得到一串密文,将这个密文与论坛数据库既有的(正确的)密文两相比较,若全等,则认为用户我ager输入了正确的密码,继而准许我登录。

上面说到,管理员你liyapeng很难透过被MD5加密的密文知道被加密的原文是啥 —— 之所以说是“很难”而不是“绝对的不可”,是因为一些程序提供了这麽一种“破解”方法:

采用“暴力性”的、“收集性”的、以及 @timothyqiu 大虾提到的“构造性”的方法,制造一切可能的明文,然后将它们用MD5加密,于是就得到了大量的明文串单射到密文串的对应关系。这样就可以试图反过来做:将密文“仿佛双射似地还原为”明文。

基于MD5本身的原理,它可以将宇宙中一切可以用数码表达的信息,满射到一串有限的固定的长度的密文上。

那么:在一个有限的固定的长度上,只能构造出有限数量的密文,尽管这个数量非常大,但是对于宇宙万物来说,只是沧海一粟中的一个夸克都不到。

也就是说:用一个有限的固定的长度的MD5密文,“可以(如果可以)还原”出无穷多组信息 —— 这就是MD5“不可逆”的道理。

综上,与其说MD5是“加密”,倒不如说它仅仅是一种“摘要” —— The name of MD(Message Digest)5 says it all!

以上,仅供参考,呵呵 —— {:3_193:}

论坛徽章:
0
6 [报告]
发表于 2013-01-07 20:43 |只看该作者
xxxxloli 发表于 2013-01-07 19:20
回复 3# liyapeng90



哦 原来如此

论坛徽章:
0
7 [报告]
发表于 2013-01-07 20:44 |只看该作者
Ager 发表于 2013-01-07 19:46
对于MD5来说,“加密”的含义是:你看到密文,但你不知道它的“原文”是什么,严格地说,是你很难知道有 ...



精辟,了解了,多谢多谢

论坛徽章:
26
CU大牛徽章
日期:2013-03-13 15:15:08水瓶座
日期:2014-08-31 19:44:01卯兔
日期:2014-09-05 08:48:33摩羯座
日期:2014-09-07 13:03:35子鼠
日期:2014-09-10 08:42:36白羊座
日期:2014-09-20 12:39:07丑牛
日期:2014-09-24 07:35:252015年亚洲杯之阿联酋
日期:2015-02-03 17:42:542015年亚洲杯之卡塔尔
日期:2015-02-11 13:13:022015年亚洲杯之约旦
日期:2015-03-03 15:10:522015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之卡塔尔
日期:2015-03-27 14:08:09
8 [报告]
发表于 2013-01-08 12:55 |只看该作者
以前密码学课有学过这些
hash函数是具有压缩性的单向函数所以可以用于判断消息的完整性 它具有单向性即给你消息可以计算他的散列值反之不可行 抗弱碰撞性和抗强碰撞性  即找到消息不同而散列值相同和找到散列值相同的偶数对消息 在计算上都不可行 同时任意消息经过hash函数产生的散列值是一样长的 。
之所以说md5被破解了即 两个集合相交问题  md5的散列值长度是128bit 即有2^128种可能 所以我们随机输入2^64个消息产生摘要集合X  再随机输入2^64个消息产生摘要Y集合  。这时x和y集合至少存在一对匹配的摘要 的概率大于0.5 。 破解就是降低碰撞的复杂性。md5的输出长度过短才128bit是被破解的主要原因
这里也可以看出md5判断消息的完整性和crc循环冗余校验是不一样的了
而有些网站提供在线md5破解 说白了就是事先存了好多常见消息的md5值  然后匹配你输入的消息的md5值  
目前hash函数中md5被破解了 sha1 sha256 sha512还没有被破解  这些算法主要对将消息进行模运算和移位运算  用c语言实现下就明白了 还有这些算法的雪崩效应很好哪怕消息只有1bit的差别输出的摘要值都差好多

论坛徽章:
0
9 [报告]
发表于 2013-01-08 13:21 |只看该作者
回复 5# Ager

基于MD5本身的原理,它可以将宇宙中一切可以用数码表达的信息,满射到一串有限的固定的长度的密文上。


求来源
以前搜过,貌似得到的结果是不但无法证明是满射,甚至很可能不是满射
   

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
10 [报告]
发表于 2013-01-08 17:55 |只看该作者
本帖最后由 Ager 于 2013-01-08 17:58 编辑
sacry 发表于 2013-01-08 13:21
回复 5# Ager

求来源
以前搜过,貌似得到的结果是不但无法证明是满射,甚至很可能不是满射


你说的很有道理:)

我把我的意思,更加严谨地表达一下吧:

对于所有由MD5算法生成的密文集合 —— 我是指真实的密文集合而非密文所用的字符集在有限的固定的串上的一切可能所构造的集合,其中的元素必至少有一串作为原像的明文。(这其实是一句废话,但囿于MD5的特性,我也只能说到这个废话的程度了,呵呵。)

“真实的密文集合”—— 可以认为是实际由MD5算法生成的密文集合,与“密文所用的字符集在有限的固定的串上的一切可能所构造的集合”,在概念上是两回事。

以现有的经验看来,前者的基数远远小于后者的。而且目前也尚没有确定的基于经验的法则,为前后二者做势上的比较。

而另一方面,不论是出于直觉,还是基于经验,甚至是倚靠严格的数学证明,都可以确定:明文映射到密文,绝对不是单射的。—— 遗憾的是,这种判断方法,对于判定或判否这种映射是满射是无效的,甚至对于判断这种判定或判否的可能性都没有帮助。

呵呵,还请各位高人、大虾指点迷津 {:3_193:}



您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP