zoukankan      html  css  js  c++  java
  • 【知识拓展】——云盘是怎么实现“秒传”的 !?

    背景:

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

        当我们上传文件的时候。软件会有短暂的延迟(提示“正在准备上传文件”),这段延迟就是先校验你的文件的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值,是很困难的。

  • 相关阅读:
    Nubia Z5S官方4.4 UI2.0音频Audio部分简单分析(也适用于其它8974/8064机型)以及降低破音出现几率的方法
    import MySQLdb UserWarning
    Visual Studio 2013 Update2
    cocos2d 重写顶点着色语言
    tomcat之组成结构
    4、Android Activity的生命周期 Activity的生命周期
    学习中遇到的c++问题,持续更新
    Android开发之发送邮件功能的实现(源码分享)
    Java 类型, Hibernate 映射类型及 SQL 类型之间的相应关系
    QT内label控件通过opencv显示图像
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7190174.html
Copyright © 2011-2022 走看看