[发明专利]一种文件的散列值的计算方法及装置有效
申请号: | 201410652575.1 | 申请日: | 2014-11-17 |
公开(公告)号: | CN104394205A | 公开(公告)日: | 2015-03-04 |
发明(设计)人: | 周星 | 申请(专利权)人: | 广联达软件股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京柏杉松知识产权代理事务所(普通合伙) 11413 | 代理人: | 马敬;项京 |
地址: | 100193 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 文件 散列值 计算方法 装置 | ||
技术领域
本发明涉及云存储系统,特别涉及一种文件的散列值的计算方法及装置。
背景技术
系统开发者在设计云存储系统时,服务器会对用户上传的文件进行散列计算。其中,计算散列值主要在于两个目的:其一,对比服务器所计算出的散列值和文件上传终端所上报的散列值,以确认文件在上传过程中的正确性,其二,在实际存储文件时,对比已经存在的散列值,达到去重的目的。
其中,对于云存储系统的文件上传功能,开发者通常将程序设计为边上传文件,边计算所上传过来的部分文件数据的散列值,这样在文件上传完毕后,便能够立即拿到散列值。实际应用中,通常采用将散列值计算方法封装到java的java.security.MessageDigest类中,然后调用该java.security.MessageDigest类的方式来实时计算上传文件的散列值。
但是,现有文件上传过程中,经常会遇到如下问题:由于终端的网络不稳定,导致文件上传中断(即出现文件断点),相应的,服务器在检测到文件上传中断时会丢弃已经计算出的已上传的部分文件的散列值,并在该文件续传时,从头计算该文件的散列值,这无疑导致计算重复,浪费大量的计算资源。
发明内容
基于上述问题,本发明实施例公开了一种文件的散列值的计算方法及装置,以避免文件上传过程中文件的散列值的重复计算,从而避免计算资源的浪费。技术方案如下:
第一方面,本发明实施例提供了一种文件的散列值的计算方法,应用于云存储系统的服务器,所述方法包括:
在基于java.security.MessageDigest类计算当前上传文件的散列值的过程中,检测是否出现文件上传断点;
当检测到文件上传断点时,提取java.security.MessageDigest类的对象中的各个关键字段的当前的字段值;其中,所述关键字段为计算当前上传文件的散列值所需要的字段;
按照预设编码方式,对所述各个关键字段的字段值进行编码处理,并将各个编码结果拼接成目标字符串;
保存所述目标字符串;
当检测到当前上传文件发生续传时,获取所述目标字符串,并将所述目标字符串还原为各个关键字段的字段值;
将所还原的各个关键字段值恢复到java.security.MessageDigest类的对象中,以继续计算当前上传文件的散列值。
可选的,所述各个关键字段包括:缓冲区、中间状态、偏移量和中间散列值。
可选的,所述按照预设编码方式,对所述各个关键字段的字段值进行编码处理,并将各个编码结果拼接成目标字符串,包括:
按照ASCII编码方式,对所述各个关键字段的字段值进行编码处理,并将各个编码结果拼接成目标字符串。
可选的,通过java反射技术,提取java.security.MessageDigest类的对象中的各个关键字段的当前的字段值;
相应的,通过java反射技术,将所还原的各个关键字段值恢复到java.security.MessageDigest类的对象中。
第二方面,本发明实施例提供了一种文件的散列值的计算装置,应用于云存储系统的服务器,所述装置包括:
断点检测模块,用于在基于java.security.MessageDigest类计算当前上传文件的散列值的过程中,检测是否出现文件上传断点;
字段值提取模块,用于当检测到文件上传断点时,提取java.security.MessageDigest类的对象中的各个关键字段的当前的字段值;其中,所述关键字段为计算当前上传文件的散列值所需要的字段;
字段值处理模块,用于按照预设编码方式,对所述各个关键字段的字段值进行编码处理,并将各个编码结果拼接成目标字符串;
保存模块,用于保存所述目标字符串;
字段值还原模块,用于当检测到当前上传文件发生续传时,获取所述目标字符串,并将所述目标字符串还原为各个关键字段的字段值;
计算恢复模块,用于将所还原的各个关键字段值恢复到java.security.MessageDigest类的对象中,以继续计算当前上传文件的散列值。
可选的,所述各个关键字段包括:缓冲区、中间状态、偏移量和中间散列值。
可选的,所述字段值处理模块,包括:
按照ASCII编码方式,对所述各个关键字段的字段值进行编码处理,并将各个编码结果拼接成目标字符串。
可选的,所述字段值提取模块,具体用于:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广联达软件股份有限公司,未经广联达软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410652575.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电话留言提示方法和装置
- 下一篇:实现无线局域网快速访问控制的系统及方法