请教有关md5的问题

问题描述

想通过前台计算上传文件md5值,然后后台搜寻匹配该md5值,来验证服务器是否存在该文件。但是我试了以下,前台计算md5值太慢了,每片2MB,一个2G的文件大概需要计算将近两分钟,用户体验貌似不是很好。不知道有没有方法能提高前台md5计算速度呢?

解决方案

解决方案二:
既然前端没有预先计算好的md5值,花时间计算是在所难免的。你可以在你的服务器端保存的文件的基础上,同时保存其“第一片的md5”,甚至只需要保存前100k的数据的md5即可。这样可以让大部分最终要失败的比较,提前失败。
解决方案三:
实际上,你的服务器端,可以保存个个“片”为基础数据,而所谓的“文件”则是按照“片集”来组织的。没有必要比较两个文件是否相同,在服务器端对于相同内容的文件也生成不同的“片集”,这样也花不了多少时间(因为当年你的前端对于每一个“片”计算md5的时候,直接发给服务器就行了)。比如果对于2G的文件与另外一个2.1G的文件相比,可能只有最后20M是有改变的,那么就不需要上传多余的“片”内容。
解决方案四:
谢谢,你说的很有道理。我现在想做的是在文件上传之前来通过md5或者是SHA3(好像越来越多人用这个?我不了解这两个有什么区别。)来验证服务器是否已经存在该文件。因为通过这样的验证我就能跳过上传阶段,直接将现有的文件与这位用户联系起来,从而实现秒传的假象。而且因此,磁盘空间也避免了不必要的冗余。或许我可以像你说的那样,截取哪里的数据也好,我只要先截出来一小段,或者几小段,然后把文件大小这个数字也交给后台,是不是通过多项的匹配就可以节省前台计算的时间了呢?

时间: 2024-10-24 22:16:30

请教有关md5的问题的相关文章

找回MD5加密的密码及MD5加密数据库中数据

有时,在开发过程中,如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办?最为菜鸟的我,刚开始也很迷茫,不过向前辈们请教了请教,自己也查了查资料,特意整理记录一下,并分享给大家. 前提是你知道这个密码存在在哪个表的哪个字段,只不过是加密了,如果是oracle数据库的话,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('预置密码'))来得到一个MD5加密后的密码, 所以我们可

发送-请教用php邮件 如何实现将一个静态页面表单内容提交到指定邮箱?

问题描述 请教用php邮件 如何实现将一个静态页面表单内容提交到指定邮箱? 请教用php邮件 如何实现将一个静态页面表单内容提交到指定邮箱? 补充(就是一个普通静态页面 点提交就可以发送内容到一个邮箱) 在线等 谢谢大神了 解决方案 你可以试一下phpmailer拓展.邮件的内容可以自定义,使用php的file_get_contents或取你要发送的文件内容. 解决方案二: 可以使用email扩展 我的blog里面有简单介绍 <?php require("email/class.phpma

后台-请教一个关于网站用户密码保存的问题

问题描述 请教一个关于网站用户密码保存的问题 之前自己做过一个简单的网页有登录注册功能的,但是我是直接将用户注册的名字和密码保存在数据库中,换句话说,我可以在数据库里直接看到用户的密码.当然这只是一个个人简单的小demo,但我想问一下,在实际投入运行的网站中,他们是怎样保存用户的密码的?后台人员能够从数据库中看得到用户的密码吗?如果看不到,那比如我们要修改密码的话,后台又是如何判断我输入的密码是否是原来的密码? 求教一下~谢谢~ 解决方案 一般来说,我们使用哈希(Hash)算法来存储密码. 其中

邮箱发送功能-微信平台酒店预订模块实现订单发邮箱功能,请教

问题描述 微信平台酒店预订模块实现订单发邮箱功能,请教 微淘微信营销平台中的酒店预订模块,希望实现订单发送到指定邮箱功能,但不知道怎样添加代码了!原代码中有个"微订餐"是已经实现订单发送到邮箱功能的,但是修改酒店预订的总是不成功,希望大神能帮看看. 第一张代码是微订餐的,第二个是想要修改的微酒店的...........................................................一:微订餐<?phpclass DiningAction exten

txt文件-请教一下,关于CFile写入TXT文件之后,对该TXT文件怎么用代码写入保护呢?

问题描述 请教一下,关于CFile写入TXT文件之后,对该TXT文件怎么用代码写入保护呢? 各位大神,您好! 请教一下,我用CFile创建了一个TXT的文件,里面存储了程序需要的多个同类型的结构体,可是这些信息都是保存在TXT文件中,是可以直接被修改的(直接找到该TXT文件,然后打开文件,就可以修改里面的内容了),但是我不想被别人修改,请问在代码中有什么办法可以实现吗灰常感谢大家~~ 解决方案 很简单,对要写入的数据做一个Hash签名(比如MD5),写在文件中. 用户修改了数据,那么Hash就对

关于文件上传和下载后的MD5校验

问题描述 项目的一个文件服务,是获取本地文件Stream,然后以二进制写入SQLSERVER,并由Stream获取MD5值.下载服务同样以Stream提供,但下载后的文件MD5值都变化了,请教原因. 解决方案 解决方案二:你的意思是否文件里存着MD5值,然后写入数据库再读出来就不一样了?解决方案三:有可能是存入数据库和读出的Encoding不同导致的.

c-关于数程序链接数据库的问题,向老手请教一下

问题描述 关于数程序链接数据库的问题,向老手请教一下 目前还在学习阶段,语言是C/C#数据库是MYSQL,想请教一下几个问题; 1.客户端每次链接数据库的时候,有没有必要检查数据是否以及开启?测试的时候发现如果数据库没有启动或中途关关闭的话,程序会直接卡死或退出,本人的想法是每次连接数据库的时候用try catch之类的语句测试一下,不让程序卡死影响其它的功能,但是这样好像比较费性能,由于没有参与过比较好的案子这里向大家请教一下这样做好不好,或者有什么更好的解决方法. 2.给客户端调用的存储过程

想请教一下THINKPHP中的修改密码如何写,修改不会写了也找了很多资料

问题描述 想请教一下THINKPHP中的修改密码如何写,修改不会写了也找了很多资料 想请教一下THINKPHP中的修改密码如何写,我写了登陆了,算是模仿老师的写法,但是修改不会写了,也找了很多资料 还是不太会.下面是我的登陆代码 //作者:文梓行.用户登陆 class LoginAction extends Action { function index() { $this->assign ( 'title', '美食分享网' ); $this->display (); } function

请教关于keytool的问题

问题描述 (1)用以下命令创建了一个名为test的keystore.keytool-genkey-dname"cn=aaa,ou=bbb,o=a,L=b,ST=c,c=d"-aliasaaa-keypass123456-keystoretest-storepass123456-validity180-keyalgRSA-sigalgMD5withRSA(2)把证书aaa导出到证书文件aaa.cerkeytool-export-aliasaaa-keystoretest-rfc-file