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

背景:

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

    当我们上传文件的时候,软件会有短暂的延迟(提示“正在准备上传文件”),这段延迟就是先校验你的文件的MD5(详解见下文),然后再在该云盘的服务器中通过MD5查找服务器中是否有相同的文件,如果有的话,那么就是将服务器中的文件直接复制一份到你的云盘中,而不是将你的文件传到云盘。这样的话就有了“秒传”的功能。当然,如果服务器中没有相同的文件,那么必须经过一点点的上传才可以,这时候上传的时间就得看你上传文件的大小和网速了。

    如果大家没有这个经历的话,尝试一下通过别人的分享,然后直接保存到自己的网盘,这样可以很快的体验到“秒传”的快感!(一首歌,以供尝试http://yunpan.cn/cmAXa8tTmgzxS  访问密码 a615)


详解MD5


什么是MD5?

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

MD5算法的简要叙述:

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

MD5算法特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的(把一个任意长度的字节串变换成一定长的 十六进制数字串)。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

你可能感兴趣的:(【知识拓展】——云盘是怎么实现“秒传”的 !?)