【知识拓展】——云盘是怎么实现“秒传”的 !?

背景:

    不知道大家在使用 * 云盘的时候,有没有发现。有时候无论你上传的东西多大。在短暂延迟之后,立即就会提示上传成功了。然而这是怎么回事呢?

    当我们上传文件的时候。软件会有短暂的延迟(提示“正在准备上传文件”),这段延迟就是先校验你的文件的MD5(具体解释见下文),然后再在该云盘的server中通过MD5查找server中是否有同样的文件,假设有的话,那么就是将server中的文件直接复制一份到你的云盘中,而不是将你的文件传到云盘。

这种话就有了“秒传”的功能。当然,假设server中没有同样的文件,那么必须经过一点点的上传才干够,这时候上传的时间就得看你上传文件的大小和网速了。

    假设大家没有这个经历的话。尝试一下通过别人的分享,然后直接保存到自己的网盘,这样能够非常快的体验到“秒传”的快感!(一首歌。以供尝试http://yunpan.cn/cmAXa8tTmgzxS  訪问password a615)


具体解释MD5


什么是MD5?

    Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之中的一个(又译摘要算法。哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为还有一固定长度值,是杂凑算法的基础原理。
就好比我们每一个人都有一个特殊的指纹一样,MD5能够为不论什么文件(无论其大小。格式,数量)产生一个独一无二的“数字指纹”,不论不论什么人对文件进行不论什么修改,该文件的“数字指纹”就会改变。

MD5算法的简要叙述:

MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组。经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

MD5算法特点:

1、压缩性:随意长度的数据,算出的MD5值长度都是固定的(把一个随意长度的字节串变换成一定长的十六进制数字串)。

2、easy计算:从原数据计算出MD5值非常easy。
3、抗改动性:对原数据进行不论什么改动。哪怕仅仅改动1个字节。所得到的MD5值都有非常大差别。

4、弱抗碰撞:已知原数据和其MD5值。想找到一个具有同样MD5值的数据(即伪造数据)是很困难的。

5、强抗碰撞:想找到两个不同的数据,使它们具有同样的MD5值,是很困难的。

原文地址:https://www.cnblogs.com/zsychanpin/p/7190174.html