既然每个不同文件的MD5php md5 java 不一样样,那么新建一个文本文档,里面假设字符长度比md5长度多十位,文件内排

当前位置: && 知识详情
MD5:一个已经过时的算法
来源:360安全播报
阅读:6667次
如果你每天需要处理数以千计的文件的话,那么最好给每个文件都生成一个哈希值,以作为其唯一的身份标识。在这里,生成哈希值的哈希函数可以是任意函数,只要它能将任意长度的数据映射为固定长度的数据即可。现实中,可供我们选择的哈希算法有很多,具体选择哪一种,主要考虑下列几个方面:*加速:算法在读取整个文件后,会对其内容进行某些数学运算,从而得到一个哈希值。如果算法的计算开销非常之大的话,那么整个过程的速度就会受到拖累。*生成的哈希值的简短程度:生成的哈希值越短,越能节约其所占数据库的空间。*安全性:通常用2个文件具有相同的哈希值(称为碰撞)的概率来衡量哈希算法的安全性能,当然,这个值越大越糟,因此它应该尽可能接近零。在选择具体算法时,我们应该仔细权衡上面的各种因素。通常情况下,为了获得更高的安全性,一般需要使用计算开销更大的算法。当前最常用的三种文件哈希算法MD5: 速度最快,同时生成的哈希值最短(16 字节)。两个文件的哈希值意外发生碰撞的概率大约是: 1.47 * 10 -29。SHA1: 其速度一般比MD5慢20%,所生成的哈希值也比MD5的要长一点(20字节)。两个文件的哈希值发生意外碰撞的概率大约是:1*10-45。SHA256:它的速度是最慢的,通常比MD5慢60%,同时它生成的哈希值也是最长的(32字节)。两个文件的哈希值发生意外碰撞的概率大约是:4.3*10-60。从中可以看出,哈希算法的速度越慢、哈希值越长,其可靠性也就越高。然而,正如你所想到的那样,各个哈希算法的碰撞概率是非常低的,即使MD5也不例外。 这个概率比所有的水滴都来自地球的海洋的概率都要低。因此,根据常识来看,选择哈希算法时不用考虑碰撞,毕竟它看起来像是一件遥不可及的事情。对MD5来说也是如此……虽然偶尔也会发生碰撞。MD5概述也许你早已知道,其实在20年前MD5就被攻破了。也就是说,目前我们已经能够人为制造MD5碰撞了:所需要的无非是一些时间、硬件和相应的软件而已。前段时间,我们得到了一些令人惊讶的样本,它们的MD5哈希值完全一样,但SHA256却各异。当然,这有可能是巧合所致,不过这种可能性极小,因此,我们对这些文件进行了深入的考察。 这里给出我们的发现:文件A:SHA256: 861F6D43AD74E56E43B7E1CFAAAF8ACEFMD5: D8CD09CF87A064B91BCA3D大小: 619.648字节文件B:SHA256: C1F584DF922F94B5E7DF05A2DC92D682EAA35D468C62D179DFF50MD5: D8CD09CF87A064B91BCA3D大小:619.648字节这两个文件绝大部分都是相同的,只有7个字节存在差异,并且它们的MD5哈希值同为D8CD09CF87A064B91BCA3D。两个样本之间的不同之处在于每个半字节的前导位已被翻转。 例如,上面的文件A中的第20个字节(偏移量0x97413)的内容是0xE2,以二进制表示的话就是。如果将该字节的第一个半字节的前导位翻转,则变为,即0x62,这与下面的文件B对应的字节完全一致。为了生成两个碰撞文件,只需要一个模板文件即可,该文件的数据块为128字节,并且在64字节边界上对齐,然后就可以通过碰撞搜寻算法随意进行修改了。此外,人们还发现,即使两个文件的前缀是单独进行选择的,也照样有可能发生碰撞。在2008年,这种技术就曾用来伪造的CA证书。
本文由 360安全播报 翻译,转载请注明“转自360安全播报”,并附上链接。
参与讨论,请先
说了等于没说,例子也不放。
小编提高点质量行吗?
安全播报APP
Copyright & 360网络攻防实验室 All Rights Reserved 京ICP证080047号[京ICP备号-6]文件MD5值是什么?_百度知道
文件MD5值是什么?
文件签名。 MD5在论坛上、软件发布时经常用,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。每个文件都可以用MD5验证程序算出一个固定的MD5码来。软件作者往往会事先计算出他的程序的MD5码并帖在网上。因此,在网上看到某个程序下载旁注明了MD5码时,可以把它记下来,下载了这个程序后用MD5验证程序计算你所下载的文件的MD5码,和你之前记下MD5码比较,就知道你下的是不是原版了,如果两者相同,那么你所下载的是原版。如果计算出来的和网上注明的不匹配,那么你下载的这个文件不完整,或是被别人动过手脚。 相当于我们的身份证 独一无二的
其他类似问题
为您推荐:
MD5的全称是Message-Digest Algorithm 5.在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明.经MD2.MD3和MD4发展而来.
Message-Digest泛指字节串(Message)的Hash变换.就是把一个任意长度的字节串变换成一定长的大整数.请注意我使用了[字节串&而不是[字符串&这个词.是因为这种变换只与字节的值有关.与字符集或编码方式无关.
MD5将任意长度的[字节串&变换成一个128bit的大整数.并且它是一个不可逆的字符串变换算法.换句话说就是.即使你看到源程序和算法描述.也无法将一个MD5的值变换回原始的字符串.从数学原理上说.是因为原始的字符串有无穷多个.这有点象不存在反函数的数学函数.
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹).以防止被[篡改&.举个例子.你将一段话写在一个叫 re...
md5的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁两张内容不一样但是 md5 一样的图片 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
探索世界的好奇心万岁
两张内容不一样但是 md5 一样的图片
13:14:13 +08:00 · 8406 次点击
我这比较的md5也确实是一样的
MacBook-Pro:md5 virusdefender$ md5 plane.jpg
MD5 (plane.jpg) = 253dd04e71de5e776bc3d
MacBook-Pro:md5 virusdefender$ md5 ship.jpg
MD5 (ship.jpg) =
253dd04e71de5e776bc3d
但是sha1不一样
MacBook-Pro:md5 virusdefender$ openssl sha1 ship.jpg
SHA1(ship.jpg)= 9639db1fbadfcfbdd10b7799f65fcfb
MacBook-Pro:md5 virusdefender$ openssl sha1 plane.jpg
SHA1(plane.jpg)= c165e76de3f10e62d1f5
71 回复 &| &直到
07:53:13 +08:00
& & 13:26:13 +08:00
有意思,怎么做到的?
& & 13:28:10 +08:00
md5的算法本来就是有可能重复的。。。虽然几率很小吧。。。
所以才一般都用MD5+sha1.。。让几率更小
& & 13:29:41 +08:00
& & 13:31:28 +08:00
chosen-prefix collisions方法构造碰撞的
& & 13:32:42 +08:00
6=3+3
6=2+4
& & 13:32:54 +08:00
MD5 Collision Demo
& & 13:43:34 +08:00 via Android
应该是主动碰撞的
& & 13:50:41 +08:00
尽管推荐用sha1()来进行数据散列算法,但另一种算法MD5也很流行。MD是消息摘要“Message Digest”的缩写。md5()产生数据散列的方式同sha1()相同,只是md5()返回的结果只有32个字节。因为sha1()的位数更长,所以相对来说不容易发生“碰撞”——一种两个不同的字符串得到同样的哈希值的情况。
& & 13:54:44 +08:00
这个不是好几年前就有了吗?是中国的一位女密码学家的成果。
& & 15:12:48 +08:00
头像~~~嘘~
& & 16:02:39 +08:00
LZ你搞一个去掉EXIF和任何附加metadata或者尾部无用字节的 jpeg ,内容不同,md5一样,就算你厉害。
& & 16:11:39 +08:00
fastcoll.exe就能做到
& & 16:46:48 +08:00
MD5碰撞吧,好像是一个中国的女学者首先证实的
& & 17:23:59 +08:00
百度网盘的秒传是用MD5,分别传这两张上去实验看看 ?'ω'?
& & 18:16:07 +08:00
@ 这两个文件都太小了,用不用秒传都是秒传~
& & 18:20:48 +08:00
生成两个内容不同,但是MD5,听说过,牛
& & 18:40:26 +08:00 via Android
这么说吧 MD5就那长 但数据却是无穷无尽的 所以总会出现多种数据对应一个MD5的情况 这是很自然的
& & 18:52:03 +08:00
@ 你知道md5是16字节吗?即使宇宙每个原子都对应一个md5都不会重复。
& & 19:04:52 +08:00
@ 无限集合映射到有限集合,总会有碰撞的
& & 19:12:00 +08:00
@ 16字节是截断过的吧,只有前半。“一般128位的MD5散列被表示为32位十六进制数字。”。
& & 19:19:31 +08:00
@ IPv6地址和MD5输出都是128bit,IPv6地址只是地球每粒沙子的级别,MD5不可能做到宇宙所有原子的级别吧。而且SHA1的输出是160bit、SHA256/512更长,如果MD5已经那么大了,没必要再加长了吧。
& & 19:28:31 +08:00 via iPhone
@ 如果不会重复,那以后文件都不用存整个了,直接从散列里还原出唯一内容就好了。
& & 19:38:34 +08:00
@ 我是说理论上会重复,实际上可以认为不会,至少不用但心随机碰撞。按wikipedia的说法32个字节就可以对应宇宙中所有原子。
& & 19:45:19 +08:00
@ 哪篇说的?
& & 20:15:32 +08:00
@ 哈哈,漲姿勢了!。。。
& & 20:16:13 +08:00
@ 求wikipedia鏈接
& & 20:16:16 +08:00
& & 20:20:48 +08:00
& & 20:25:17 +08:00
@ 哪句,没看到。建议看看
,两者差得很远。
& & 20:26:09 +08:00 via iPhone
@ 没记错的话是王小云(芸),原先我们学校的数学系教授,后来就去了清华。
& & 20:40:40 +08:00
@ 32位md5可存儲信息量: 16^32=2^128 近似 10^38
全球儲水量:亿立方米 近似 10^10億立方米 即億噸 即 10^18 噸
即10^(18+6)g 即10^24g 不管氧原子,衹算氫原子:10^24 g *1/9 約爲 10^23g 約爲 10^23 mol
10^23 * NA 約爲 6*10^46個
約爲 10^46 個
& & 20:42:04 +08:00
一算才發現確實很大,不過還差的遠~
& & 20:50:55 +08:00
@ 那上写估算原子总数在10^80量级,len(str(256**32)) == 10^78,也差不多了
& & 20:52:14 +08:00
样子不同,年龄相同的两个人。(年龄就是摘要)
& & 20:59:27 +08:00
@ 沒搞懂怎麽算10^78的~
& & 21:05:38 +08:00
@ 你这算的是32位字节最多能存储的数据量。上面说过了,MD5的输出是128bit,32个字节是转换后的十六进制数列。128bit/8=16字节。PS: 原来真的是16字节,20楼我说错了。
@
写的“128 bits (16 bytes)”是2^7。
& & 21:16:46 +08:00
仨球放俩抽屉里, 在不切割球的前提下, 必然有一个抽屉有俩球.
& & 21:29:36 +08:00
百度云识别成同一张了 2333
& & 22:33:11 +08:00
128位MD5 = 2^128 = 3.4 ×10^38 个地址
1摩尔 = 6.02×10^23
(3.4 ×10^38)/(6.02×10^23) = 5.6x10^14 摩尔
按25度下的水来算 =5.6x10^14 /18 = 3.1 x 10^13 克 = 3.1x10^7 吨 = 3千万吨水
一条128位MD5 = 3千万吨水原子
忽略温度,2010年全国总用水量6022.0亿吨
& & 22:45:16 +08:00
= 2^256 =1.1x10^77 个地址
宇宙可可观测原子数量 N x10^80 个 还是不够...
& & 22:52:54 +08:00
有程序可以一键碰撞 MD5
& & 22:59:16 +08:00
@ 属性插件发一下。
& & 23:08:21 +08:00
@ plane那张根本传不上去好吧,怎么传都显示的是ship 的图片
& & 23:22:51 +08:00
& & 23:24:37 +08:00
刚刚把两张图解压出来之后想放到印象笔记里面
发现两张图变一模一样了=,=
取决于你先丟哪张进去。有意思。
& & 23:42:03 +08:00
明明都知道 MD5 可以主动碰撞,而且都好多年了啊,这些服务商为什么到现在都还在用 MD5 做重复校验呢…?
& & 23:47:48 +08:00
& & 01:09:28 +08:00
@ 因為沒人會主動去撞吧...
& & 01:15:59 +08:00
@ 所有的哈希算法都会撞。平时用的hashtable啥的,hash key天天撞年年撞,也没见大家都把hashtable删了自己实现啊?
& & 01:32:28 +08:00
@ 差的太远了吧,无限到有限,理论上来说是一定会碰撞的,学过数学的极限的话应该知道
有限 / 无限 = 0
如果你把宇宙中所有原子md5,其状况是几乎一直在碰撞:因为早就塞满了。
简单算一下,32位的MD5有16^32个值,也就是3.4 * 10^38
太阳的质量是1.989×10^30 千克,其中71.3%是氢
一个氢原子的质量约为1.66×10^-27 千克
所以仅仅是太阳就有1.3 * 10^57 个氢原子,如果把这样氢原子散列在MD5的空间里,
那么平均每个md5值上需要塞
3.4 * 10^18 个氢原子。也就是说,没有碰撞的概率可以忽略不计。
小伙子,请对宇宙有敬畏之心。
& & 01:33:37 +08:00
抱歉,我忘记乘以71.3%了,不过,你懂的……
& & 02:20:19 +08:00
以前有一次用qq邮箱发超大附件,别人接收到的是另一个不知道是谁的压缩包,里边都是限制级的图。试了好多次都这样。
& & 04:43:51 +08:00
@ 收集新出A片的MD5, 然后弄一堆同MD5的葫芦娃抢先上传, 2333
& & 05:32:15 +08:00
& & 07:24:18 +08:00
方校长有一篇干扰BT下载的论文里就是这么干的,233
& & 09:06:44 +08:00
@ 校友你好。这是你学长 @
& & 09:55:02 +08:00
王小云那个碰撞啊,但是碰撞了之后出来的应该是个打不开的文件,而这个文件居然很完整?!
& & 10:45:54 +08:00
一堆科学家开始在这里计算了!
& & 11:24:55 +08:00
有意思,这样的话可以用这个方式替换掉别人云上的文件了
& & 12:04:33 +08:00
@ 这是什么插件
& & 14:57:05 +08:00
大小也一样,我很好奇这是构造的还是巧合?
& & 16:18:14 +08:00
@ jpg是允许结尾拼接无关数据的。所谓”图种“就是这么来的
& & 18:03:10 +08:00
@ 所有的 hashtable 实现都会考虑并且处理碰撞的啊
& & 18:08:12 +08:00
@ 但是md5是散列的啊!!像图种那样拼接在结尾是不能实现md5一样呀
& & 19:10:59 +08:00
& & 22:00:26 +08:00
& & 22:01:12 +08:00
& & 22:15:18 +08:00
@ 也不是,hash函数原理是单向过程很简单,但是反推就极其复杂。可能是一一映射,但是想通过hash值找原函数几乎不可能。
md5就是被发现了可行的算法来找相同md5的串,所以不安全了。
& & 01:25:13 +08:00
未必,王小云不是已经证明某些情况下主动碰撞难度可以大大降低了么。
两张图片原来的大小不一样都没关系,补到同大小
我只要给两张图片分别补上构造的数据,使他们md5一样即可。
& & 04:35:10 +08:00
@ 举个例子,微软所有的iso,crc都是FFFFFFFF,就是通过补32位的数据做到的。
当然CRC不抗人为攻击,做起来要简单点,MD5是散列,做起来麻烦点而已。
& & 07:53:13 +08:00 via Android
涨姿势了!
& · & 677 人在线 & 最高记录 1847 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.3 · 65ms · UTC 17:13 · PVG 01:13 · LAX 10:13 · JFK 13:13? Do have faith in what you're doing.MD5在线加密
要加密的字符串:
关于MD5加密
  MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:   MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e   这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:   大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件名做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。   我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。   MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。   MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方。如在UNIX系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。MD5将任意长度的“字节串”映射为一个128bit的大整数,并且是通过该128bit反推原始字符串是困难的,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。所以,要遇到了md5密码的问题,比较好的办法是:你可以用这个系统中的md5()函数重新设一个密码,如admin,把生成的一串密码的Hash值覆盖原来的Hash值就行了。   正是因为这个原因,现在被黑客使用最多的一种破译密码的方法就是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 Bytes),同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)….+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。这种加密技术被广泛的应用于UNIX系统中,这也是为什么UNIX系统比一般操作系统更为坚固一个重要原因。
随机推荐查询工具
CopyRight &
All Rights Reserved谁懂MD5数值_百度知道
谁懂MD5数值
9CED0B42CE3CDBC012338E
谁能帮我翻译下 我丑不胜感激 ,先谢谢
提问者采纳
要么就是此文件已被别人修改。这需要一款检测MD5值的专门小软件,第三个文件为原始文件的复制文件,过了一段时间后如果你怀疑某些文件被人换掉,说明你下载的文件是不完整的,用MD5还可以防止文件作者的“抵赖”。因此、MD3和MD4发展而来,下面我们来看一看如何读取并校验文件的MD5信息:要么就是在网络下载的过程中出现错误,来确定文件是否安全,与字符集或编码方式无关。
MD5将任意长度的“字节串”变换成一个128bit的大整数,经MD2,而系统并不“知道”用户的密码是什么,若和从前得到的MD5校验码不一样。
如何读取和校验MD5信息
了解了MD5信息以后,你对这个文件重新计算MD5时就会发现(两个MD5值不相同), 用户Login的时候。请注意我使用了“字节串”而不是“字符串”这个词,那么就可以肯定是有问题的,点击“Open”按钮。
为了验证文件修改后的MD5值是否发生变化,笔者用一个文本文件进行了测试。点击“Save”按钮可以将读取的MD5保存为一个。
Message-Digest泛指字节串(Message)的Hash变换,第二个文件为进行修改后的文件(不过只是在打开原始文件的基础上加入了一个空格),在很多操作系统中.txt产生一个MD5的值并记录在案,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,这就是所谓的数字签名应用,就是把一个任意长度的字节串变换成一定长的大整数,就可以给自己下载的文件做个MD5校验。
当我们用E-mail给好友发送文件时、图像文件,它的MD5值也将随之改变,尽管改动不大,无论是可执行程序,是因为原始的字符串有无穷多个,将该数值同网站公布的数值进行比较即可确定文件是否完整了,这有点象不存在反函数的数学函数,你将一段话写在一个叫 readme,换句话说就是。
再比如。如图2所示,这样好友收到该文件以后即可对其进行校验,即使你看到源程序和算法描述,它可以说是文件的“数字指纹”。 MD5是message-digest algorithm 5(信息-摘要算法)的缩写,然后你可以传播这个文件给别人,可以将MD5值复制出来,别人如果修改了文件中的任何内容,是因为这种变换只与字节的值有关。
MD5到底有什么用
当我们下载了如图1所示之类的文件后。任何一个文件.txt文件中.EXE文件即可,我们可以通过对比同一文件的MD5值,那么就可以给那些被怀疑的文件做个MD5校验,都有且只有一个独一无二的MD5信息值,选择并打开想要进行校验的文件,这是一款绿色软件,用记事本打开该文件,来校验这个文件是否被“篡改”过,可确认所下载的文件是完整的。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹).MD5文件。从图中可以看出。如果再有一个第三方的认证机构。
MD5还广泛用于加密和解密技术上,从数学原理上说,稍等片刻后,以防止被“篡改”,可以将要发送文件的MD5值告诉对方。软件的使用非常简单,并且它是一个不可逆的字符串变换算法,最好不要使用,并且如果这个文件被修改过,被广泛用于加密和解密技术上。如果得到的MD5值和网站公布的相同,解压缩后运行其中的MD5。举个例子:在刚安装好系统后可以给系统文件做个MD5校验,也不管它体积多大,用户的密码是以MD5值(或类似的其它算法)的方式保存的,系统是把用户输入的密码计算成MD5值。为防止他人更改该文件时放入病毒、临时文件或者其他任何类型的文件,第一个文件为进行测试的原始文件,如果想知道下载的这个文件和网站的原始文件是否一模一样,然后再去和系统中保存的MD5值进行比较。如有不同,也无法将一个MD5的值变换回原始的字符串,在MD5一栏中便会显示该文件的MD5值,而复制得到的文件则不会发生变化,并对这个readme,但是两个文件的MD5值却大相径庭MD5的全称是Message-Digest Algorithm 5
其他类似问题
为您推荐:
md5的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 php md5 java 不一样 的文章

 

随机推荐