文件md5是什么(文件md5加密算法)

最近想做一个文件管理库,发现文件多到一定程度后只用文件名来管理有些困难,想尝试下用其它方法来管理文件,这时想起来各类网盘工具中的“秒传”功能,在传文件时,几个G的文件一下就传上去了,但其实就没传,原理据说就是计算文件的md5值,然后检查系统里已经有这个文件了,就不用在上传了,给用户显示“你的文件已经秒传成功”。 另外日常使用的git在提交文件时也有类似的操作,但用的不是md5而是sha1,打开“….

最近想做一个文件管理库,发现文件多到一定程度后只用文件名来管理有些困难,想尝试下用其它方法来管理文件,这时想起来各类网盘工具中的“秒传”功能,在传文件时,几个G的文件一下就传上去了,但其实就没传,原理据说就是计算文件的md5值,然后检查系统里已经有这个文件了,就不用在上传了,给用户显示“你的文件已经秒传成功”。

另外日常使用的git在提交文件时也有类似的操作,但用的不是md5而是sha1,打开“.git/objects/ ”目录里面就是sha1算法生成的文件。

sha1和md5的作用是相同的,但sha1碰撞难度更高,有更好的安全性,但在一般情况下,md5就已经够用了。

动手开始写代码,代码运行起来后,遇到了第一个困难,”磁盘占用率太高”,记得以前用机械硬盘时,windows动不动就磁盘占用率100%,用了各种办法都没法解决,以为这是微软在提示用户,你的硬盘应该升级了,最后只好升级固态硬盘解决了这个问题,没想到今天又遇到了这个问题。

我用的是php的md5_file()函数计算文件的md5值,当计算2G以上mp4文件的md5值时cpu 内存都正常,磁盘占用却率升到70%以上。于是我更换了编程语言,看是否还有这个问题。

首页找到了一个python计算文件md5值的封装,但测试下来也是一样的问题,磁盘占用率太高,于是又用上了js,在github找到了spark-md5.js这个库,在浏览器前端计算文件的md5值,发现虽然没有磁盘占用率太高的问题,但浏览器的内存占用又太高了。

于是就想能不能不判断下文件大小,对太大的文件不计算md5了,结合文件大小,最后修改时间,创建时间等因素来做文件的唯一标识(找出文件有多少个副本),这个方法并不好,因为文件的元信息是可以随意改动的,要造出两个元信息完全一致的文件并不困难。

经人指点后,感觉还是要用md5才行,但对于太大的文件,可以并不计算整个文件的md5,而是抽取文件部分内容计算hash。因为并不需要文件的全部内容。

对于太大的文件使用:文件大小+内容

抽样(头、中、尾或每隔xx字节抽样一次哈希),写了一段php代码来验证这一思路,发现可行。测试下来没有磁盘占用率太高的情况,也不吃内存,没有性能问题,

function file_md5_16k($path){
  $size=filesize($path);//取得文件大小
  if($size>16384){//如果文件大于16kb
    $str=$size;
    $str.=file_get_contents($path,null,null,0,4096);#文件头部4kb
    $str.=file_get_contents($path,null,null,(($size/2)-2048),4096);#文件中部4kb
    $str.=file_get_contents($path,null,null,($size-4096),4096);#文件尾部4kb
    return md5($str);
  }else{ //文件不太,不抽样,直接计算整个文件的hash
    return md5_file($path);
  }
}

这里只是测试16kb以上的文件就用了抽样计算,实际应用中16k的文件太小了,大于16kb的文件太多,中间修改了一些内容很会产生重复。应该设置的更大一些。

md5存在重复可能,在md5基础上再结合文件类型,文件元信息等就可以对文件做唯一标识,避免文件重复,从而建立文件指纹库。

当然要实现文件“秒传”要做的远远不止这些,这个只是实现原理算法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月11日 下午1:25
下一篇 2022年5月11日 下午1:26

相关推荐

  • 小程序制作流程及费用,个人怎么做微信小程序

    首先,网站必须是https,否则不可以。点击申请免费ssl证书,https://freessl.cn。 第一步,注册小程序,如果有公众号且认证过了的,直接在公众号后台,点击小程序,注册小程序并复用公众号的认证资料,那么小程序也就认证了,在这里就不多赘述了 第二步,进入小程序后台,只需要三个参数即可。点击左侧开发-开发设置,获取开发者APPID、AppSecret小程序密钥,还有一个点击左侧设置右边…

    2022年6月25日
    700
  • 女生就业前景好的专业,这十大专业不仅就业率高还轻松

    大学里可供选择的专业太多,但是很多专业男生、女生学起来的感受还是非常不同的,而且有些专业还是不太推荐女生去报考的。今天就推荐十大女生吃香的大学专业以及几个就业好的专业,供大家参考! 十大女生吃香专业 >>>>1.外国语言文学类 诸如阿拉伯语、西班牙语、法语等几个不太小的小语种。 推荐理由:1.女生语言接受、文字接受能力较强,对语言兴趣相对较大; 2.小语种专业将来就业方向多…

    2022年9月28日
    400
  • 怎么在网上申请商标,网上申请商标流程

    最近,野望知产有很多客户会问,个人是否可以不用公司申请注册商标? 答案是可以的。 根据《商标法》的规定,自然人、法人和其他组织机构只要符合申请条件的,都能申请商标。 那么,个人注册商标需要满足什么条件?怎么办理申请注册呢? (一)个人注册商标所需提交的材料 个人注册商标,必须要有营业执照,且个人名义下的个体工商户营业执照(企业的营业执照是不行的哦)。 然后准备好个人身份证原件复印件、准备申请的商标…

    2022年6月1日
    720
  • 企业微信是哪里开发的,企业微信开发教程

    微信公众号作为微信最主要的产品,分为服务号和订阅号,拥有聚集粉丝,品牌宣传等作用,但随着市场的发展,人们的进步,微信公众平台后台自有的功能已不能满足大众的需求,越来越多的人已开始转向微信第三方平台开发商以满足市场的发展与用户的需求。如果微信公众号不进行开发,只是用免费的功能每天发布一些广告、新闻、动态长此以往客户潜意识就认为你这打广告没有任何的实力。 安徽智速新媒体公司 那么,企业为什么要进行微信…

    2022年7月4日
    630
  • 抢票软件哪个成功率高,成功率高的抢票软件大合集

    一到年底,出门在外的小伙伴都会想怎么买到票,早点回家过年,其实小编也是心急如焚,不过还好,最近终于买到票,而且还帮亲朋好友买到了,购买火车票分三个途径,线下窗口、12306PC端和移动端、电话订票,它们的票源都是分开的,并且有一定的配置比例,所以线下销售点、官网和手机端、电话订票是相互不影响,现在来说用手机买票的小伙伴应该是最多的,接下来小编分享几款我抢票的四款神器抢票软件,帮助大家早日买到合适的…

    2022年7月7日
    620
  • 笔记本电脑什么牌子好性价比高,8款口碑最好的轻薄笔记本

    今天我们就选购笔记本的话题再开一篇。补充一些前文没有提到的问题,并安利几款笔记本给大家。 一、如何确定自己的预算和需求 这点非常重要,请各位在购买之前一定要了解清楚。笔记本电脑按大类来分有三种类型: 1、轻薄本这类笔记本优点是比较轻薄,便携性好,续航长。适合日常使用——办公、追剧、普通网游(CF、LOL、卡牌类游戏)。这类笔记本通常使用低功耗CPU。价格在3000-5000不等。这类笔记本适合的人…

    2022年9月28日
    520
  • 公众号如何快速吸粉,一周内吸粉7000+的6个技巧

    我个人从17年开始主要运营公众号,当时刚刚毕业半年,辞职全职去操作,那段时间倒逼自己快速成长,从公众号涨粉,运营维护,包括后期变现,到公众号涨粉的一些工具,一些第三方平台都详细去研究过,最高时期自己运营了三个公众号,粉丝数量达到40W,这里来说说我自己的一些运营技巧,系统化的梳理一下。 公众号运营没那么简单,你需要掌握如何引流涨粉,如何提高用户粘性,提高阅读量,同时你还要想好如何变现,毕竟咱们多数…

    2022年8月28日
    990
  • 房产销售如何找客户,分享3个拓展客源的方法

    一、寻找潜在客户的途径 1、客户信息汇集中心:这是房产经纪人从事业务过程中汇集的交易双方及其他方面客户的信息资源。经纪人从老客户和其延伸的关系网络扩大更广的领域,挖掘新客户。这个方法准确、快捷、省事省力但资源有限,需要我们有良好的口碑作基础。 2、房展会:各地每年都有房展会,经纪人可以利用各种方法采集信息,以便有更多选择余地。 3、互联网:互联网的信息量丰富,更新快,房地产经纪人可以利用互联网搜索…

    2022年10月7日
    520
  • 好玩的微信小游戏有哪些,2019微信最火小游戏

    随着微信跳一跳上线,玩一个小游戏变成了大家打开微信最正经的事。一时间所有微信好友都沉迷在跳一跳里不能自拔。跳一跳已经上线了两个礼拜了,大家玩够了吗? 虽然到现在为止微信平台并没有向开发者开放小游戏开发的权限,也没有提供小游戏集中入口。但除了跳一跳,目前微信还上线了自己的17款小游戏,包括棋牌类游戏,消除类游戏和一些其他的休闲类游戏。相比单独下一个APP玩游戏来说,微信小程序玩游戏更加方便,在我们刷…

    2022年6月8日
    690
  • 专利价值有哪些,专利价值分析报告

    说到专利评估,可能大家不甚了解。但是很多企业钟情于于研发专利技术,当专利申请成功后,或是将专利技术投放生产,或是将专利转让出去。不论是哪两种情况,都需要经过专利评估,来确定该专利的价值。就让一休小编来为大家详细讲解下吧。 一、专利评估的重要性 作为实现专利权和专利产业化应用的重要中间环节,专利评估是实现知识产权产业化发展的重要环节。就专利评估的目的而言,主要分为以下几种:(1)企业重组与收购及合资…

    2022年6月1日
    750

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信