1
3dwelcome 2020-12-27 05:36:13 +08:00 via Android
我是再加上文件大小,和 md5 组合在一起。
光 md5 判断,你心里用着也不踏实。 |
2
toaruScar 2020-12-27 05:43:44 +08:00
MD5 不行的,Length Extension Attack 了解一下。
|
3
geelaw 2020-12-27 06:01:05 +08:00 via iPhone 1
@toaruScar #2 length extension 和 collision resistance 不矛盾。
不过 MD5 已经不是 collision-resistant hash function 了,恶意碰撞可行,所以不宜使用。 |
5
gunpowderfans 2020-12-27 06:23:46 +08:00 via Android
同时校验多种 hash 也许可以
|
6
kaiki OP @gunpowderfans 校验的话倒是可以多种,校验哪些数据呢?
url 中就得有一个唯一标识了,这个怎么算呢? |
7
gyf304 2020-12-27 06:56:40 +08:00 via iPhone
|
8
LimeQAQ 2020-12-27 09:45:15 +08:00 via iPhone 11
昨天刚试了两张图片 md5 相同的情况,第二张上传到百度网盘,打开变成了第一张图片。惊不惊喜,意不意外。
|
9
imgbed 2020-12-27 09:46:33 +08:00 via Android
看你有多少文件,如果不大,不需要考虑极小概率
|
10
cmdOptionKana 2020-12-27 10:23:50 +08:00 via Android
用 sha256
|
11
JinTianYi456 2020-12-27 10:41:30 +08:00
|
12
crab 2020-12-27 11:17:14 +08:00
可以用 sha1+文件大小
|
13
Daming 2020-12-27 11:22:01 +08:00 via Android
布隆过滤器还要多个 hash 呢,还不保证一定存在。
只用 md5 岂不是更不保险。 |
14
riggzh 2020-12-27 12:05:37 +08:00 via iPhone
任天堂使用的是 sha256 然后截取前 16 位
|
15
YouLMAO 2020-12-27 12:23:27 +08:00 via Android 1
md5 破解第一人应该是哈工大,活该被制裁
|
17
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 |
18
unixeno 2020-12-27 15:46:54 +08:00 via Android
建议用 sha256
|
20
ThirdFlame 2020-12-27 17:36:28 +08:00
sha256 + 文件大小 目前可靠的。
就个人 /企业使用 md5 + 文件大小 实际上也是没啥问题的。 |
21
learningman 2020-12-27 20:32:07 +08:00
@LimeQAQ 百度网盘好像是取前 200k 的 md5 做秒传
|
23
leon0903 2020-12-27 21:19:45 +08:00
都说 md5 不可靠,但是我觉得没必要考虑这种极小概率的情况。我们公司以前就是用的 md5,我从来没见过有客户投诉说文件不对的情况。
|
25
zhangxiaogang 2020-12-27 21:29:44 +08:00 via iPhone
不是很关紧的话,文件有修改时间属性,比较一下也可用
|
26
okcdz 2020-12-28 00:09:40 +08:00
看你的量大不大了,如果只是做着玩玩,几百几千,甚至几万个文件,MD5 用着不会有啥问题。
但是如果考虑拓展性,几百万,千万文件级别,要用更靠谱的方案了。 |
28
Jooooooooo 2020-12-28 00:29:09 +08:00
百度网盘就用 md5 ( 要是领导问你为什么 md5, 你就这么说
|
29
clf 2020-12-28 00:40:52 +08:00
除了网盘、视频网站、图库等大批量存储的应用场景,感觉没必要节省这点资源?
如果需要的话,md5 校验+文件大小判断其实就可以了,另外,相同用户(业务场景)上传的文件才判定为同一文件。这样就基本不可能出啥事情。除非用户刻意找两个 md5 相同且文件大小一样的同后缀文件。 |
31
clf 2020-12-28 00:52:02 +08:00
@kaiki #30 那 md5 一致性校验只校验一个用户下的文件就行了,基本不会出问题,不会说一个用户恶意攻击导致其他用户文件丢失。
如果出现同个用户下 md5 相同的情况,保留服务器上的原文件,更新一下文件的修改日期即可,这样即便发生了什么,旧的文件和新的文件各在服务器和用户本地都有。(再过分一点的省资源方法就是文件在客户端就做 md5 解析校验,然后对比服务器上有没有,没有的再上传,这样还省带宽) |
32
ijrou 2020-12-28 01:32:09 +08:00
如果文件上千万亿的话,那么 md5 不适合。。。
|
34
dusu 2020-12-28 01:51:38 +08:00 via iPhone
我司三千万文件,就是用 md5,几年都没有什么问题,楼主想多了
|
35
2kCS5c0b0ITXE5k2 2020-12-28 02:11:01 +08:00
概率很小~ 加上时间基本不可能
|
36
aliceclark 2020-12-28 03:29:51 +08:00
|
37
Arthur2e5 2020-12-28 06:25:53 +08:00
不该,配上长度也不该,因为 md5 不行。现在都公元 202 年了,图速度也可以用 blake3——比 md5 、sha1 、sha256 都快。接下来开始传教 /抹黑同行。
@aliceclark xxHash 那么大一个 non-cryptographic 。这东西是用来做哈希表的,不是用来防人故意撞得。 @dusu 面向什么都敢传的用户还用 md5 就是胆大包天。百度云盘前车之鉴放在那里,以文件损坏出名不是吹的。 |
38
wnpllrzodiac 2020-12-28 07:48:53 +08:00 via Android
@lysS 尾部嵌入。可以制作以特定字符串停止的滚动 gif.包括文件自身的 md5
|
39
nlzy 2020-12-28 10:41:16 +08:00 1
加上 size 一点用没有。用一台普通的 PC 机在 **几分钟** 内就能生成两个 MD5 一样的文件,而且可以让这两个文件大小一样。
MD5 首次发现冲突都已经十几年了,为什么还要抱着他不放啊。为什么宁愿写各种业务代码,加什么文件大小,加什么时间戳,都不愿意改用一些没有找到冲突的哈希函数啊。 在现代的 64 位 CPU 上,SHA-512 真的很快,SHA-256 速度也没有慢到哪里去,这几个哈希函数性能都是在同一个数量级的,单核都是跑几百 MB/s,比机械硬盘或者 G 口网卡的吞吐量都大了。不要再说 MD5 省资源了。 不要再在新系统中使用 MD5 或者 SHA-1 了,求求你们。 |
41
wakzz 2020-12-28 14:13:03 +08:00
目前 md5 会出现哈希冲突的问题,通过使用 sha256 替代 md5 可以解决。
|
42
shansing 2020-12-28 14:16:13 +08:00
SHA-256 吧,实在觉得长就截取。
|
43
tabris17 2020-12-28 14:18:38 +08:00
无论是哪种摘要算法,碰撞是肯定的,然而你只要防范恶意碰撞就行了,加盐 md5 足够了
|
45
LimeQAQ 2020-12-28 17:26:57 +08:00
@v2tudnew 哈哈哈,今天有点忙,我压缩上传某盘了,你下载看一下。给某盘或某乎上传 2.jpg ,打开后会发现现实 1.jpg 的内容。
哇,注册不够 30 天,不能发链接。你自己拼一下 pan.baidu.com/s/1svvr6tFoHwrcag9-n-DdhQ 提取码: qg42 |
47
geligaoli 2020-12-28 21:47:13 +08:00
用 sha256 吧,md5 和 sha1 都已经有冲突文件了。
|
49
chogath 2020-12-29 10:15:37 +08:00
|