【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

从技术角度简单科普网盘、屏蔽/秒传资源实现方式及MD5算法

2,236次阅读
没有评论

热帖

前言

网盘/云盘产品在我们日常工作生活中使用的频次是日益增多了,从外出旅游的照片、随手拍的短视频,到追的各种韩剧、日剧、欧美剧和荧幕大片,再到工作用到的各种PPT文档、电子资料,我们已逐渐习惯了上传到网盘然后随时存取。当我们上传一些比较通用的软件安装包或者流行的影视作品时,虽然文件很大,但是经常出现秒传的现象,这些是怎么实现的呢?

一、网盘 屏蔽/秒传 资源的方式

大白话:文件通过某种方式都能确定出一串数值,该数值基本上唯一(为什么要说基本上?后文会解析) 。为了方便理解,我们不妨先暂时叫它特征值。

秒传实现方式:当你上传文件时,网盘客户端先计算该文件的特征值,然后在数据库中查询。如果有相同的特征值就说明是同一文件,就把它“秒传”到你的网盘上,实际上你用的还是网盘服务器上已存在的资源。

屏蔽实现方式:当网盘后台审核人员认为某一文件违法,则此文件特征值就被“拉黑”了。不论你是已经在网盘里的还是准备从磁力下,通通屏蔽,这就是有时候我们洗种改了敏感词依然不能离线成功的原因—特征值没有变化。

二、MD5

上文我们提到了通过某种方式来确定特征值,这种方式就是我们今天要说的MD5算法(其实现在用SHA-256 和SHA-512 的多,科普入门所以这里不再赘述)。这里不说很多书面的知识包括MD5 长度几个bit 算法实现等等,只说最关键的:MD5是输入不定长度信息,输出固定长度128-bits的算法

说大白话就是:不论输入的变量长度是多少,输出长度是固定的。再翻译一下就是2G的文件和20G的文件,翻译成0101010101,通过MD5算法算出来的特征值长度是一样的。

这时候有人会说: “特征值就这么长,世界上文件这么多,万一有两个不同的文件MD5值一样怎么办?” 恭喜你!都会抢答了。这种情况当然会存在,只不过概率很小。原因的话涉及到算法本身,感兴趣建议看一下《应用密码学:协议、算法与C源程序(原书第2版)》 (其实我也没认真看过 论坛有搞密码学的大佬给大家科普科普啊)。

回到刚刚问题上来,如果两个不同的文件MD5值一样会出现什么情况?设想这样一个场景:你今天结婚,拍摄的婚礼录像很宝贵,你把录像存到网盘,显示“秒传”成功。若干年后你想重温一下,打开网盘点开视频,发现是风马牛不相及的其他视频,比如7个葫芦娃…
同理,当你上传合法合规的文件时提示“该文件违反条例已被屏蔽”…

三、总结

上面举的例子多少有些危言耸听了,甚至有可能网盘都不是用的MD5。但道理是相同的,实际上,两个不同的文件MD5值一样的概率很小很小 (不过现在已经有相关技术了) ,而且MD5算法现在基本上用于校错,有更高级的算法(比如SHA-512)来代替它。我相信随着技术的发展和密码学的进步这些问题都会迎刃而解,说不定不久的未来就会出现一种完美的算法来服务于这些产品。

扩展:

网盘秒传在扩散传播一些公开的、通用的文件时,因为其便捷省时,固然是值得称道的;但是对于有保密或者隐私要求的文件是一个不小的隐患,一个小技巧是制作一个单独的小txt文件,然后和需要上传的文件一起打包,这样压缩包的MD5值一定会发生改变,可以有效降低被识别为秒传资源的概率…当然,重要和敏感的数据还是少上传为妙,不管什么系统都不是100%可靠的!

资料收集自互联网络,由IT摇篮曲整理。

正文完
 
itylq
版权声明:本站原创文章,由 itylq 2022-09-28发表,共计1353字。
转载说明:本站文章遵循CC-4.0国际许可协议,转载请注明出处(格式如“来源:IT摇篮曲www.itylq.com")。
评论(没有评论)
验证码