文件储存用 md5 做标识可行吗,要考虑会出现相同 md5 的文件的情况吗?

2020-12-27 05:24:56 +08:00
 kaiki
为了节省资源打算验证一下 md5 如果有相同的则直接使用之前的,但是 md5 也是可以重复的,有什么好的校验办法吗?
6200 次点击
所在节点    问与答
49 条回复
3dwelcome
2020-12-27 05:36:13 +08:00
我是再加上文件大小,和 md5 组合在一起。
光 md5 判断,你心里用着也不踏实。
toaruScar
2020-12-27 05:43:44 +08:00
MD5 不行的,Length Extension Attack 了解一下。
geelaw
2020-12-27 06:01:05 +08:00
@toaruScar #2 length extension 和 collision resistance 不矛盾。

不过 MD5 已经不是 collision-resistant hash function 了,恶意碰撞可行,所以不宜使用。
kaiki
2020-12-27 06:11:54 +08:00
@3dwelcome 所以我记录什么和查询什么才能最效率的识别已存在内容呢?以及标识用什么方法生成
gunpowderfans
2020-12-27 06:23:46 +08:00
同时校验多种 hash 也许可以
kaiki
2020-12-27 06:34:46 +08:00
@gunpowderfans 校验的话倒是可以多种,校验哪些数据呢?
url 中就得有一个唯一标识了,这个怎么算呢?
gyf304
2020-12-27 06:56:40 +08:00
LimeQAQ
2020-12-27 09:45:15 +08:00
昨天刚试了两张图片 md5 相同的情况,第二张上传到百度网盘,打开变成了第一张图片。惊不惊喜,意不意外。
imgbed
2020-12-27 09:46:33 +08:00
看你有多少文件,如果不大,不需要考虑极小概率
cmdOptionKana
2020-12-27 10:23:50 +08:00
用 sha256
JinTianYi456
2020-12-27 10:41:30 +08:00
@3dwelcome #1 加上大小也可能一样 /t/169241

@kaiki 月经问题 /t/733384
crab
2020-12-27 11:17:14 +08:00
可以用 sha1+文件大小
Daming
2020-12-27 11:22:01 +08:00
布隆过滤器还要多个 hash 呢,还不保证一定存在。
只用 md5 岂不是更不保险。
riggzh
2020-12-27 12:05:37 +08:00
任天堂使用的是 sha256 然后截取前 16 位
YouLMAO
2020-12-27 12:23:27 +08:00
md5 破解第一人应该是哈工大,活该被制裁
dethan
2020-12-27 14:32:54 +08:00
@YouLMAO 你这是什么脑残言论?我上网这么久,真的是第一次喷人,太傻逼了
cmdOptionKana
2020-12-27 15:33:43 +08:00
看这里 https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest

md5 早已被证明碰撞风险太大,而 sha-1 则是 is now considered vulnerable (脆弱的、易受攻击的)。

一般来说 sha256 够用了,则在不行还可以考虑用 sha-384 甚至 sha-512
unixeno
2020-12-27 15:46:54 +08:00
建议用 sha256
lysS
2020-12-27 17:08:48 +08:00
@LimeQAQ 所以怎么得到两张一样 md5 的照片喃?
ThirdFlame
2020-12-27 17:36:28 +08:00
sha256 + 文件大小 目前可靠的。
就个人 /企业使用 md5 + 文件大小 实际上也是没啥问题的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/739305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX