加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java可恢复哈希计算

发布时间:2020-12-15 00:42:23 所属栏目:Java 来源:网络整理
导读:我想实现在服务器上上传的某些文件的可恢复的即时哈希生成.文件很大所以我正在使用MessageDigest类的update(byte [])方法(如此处所述,例如: How can I generate an MD5 hash?),因为新字节从HttpServletRequest的InputStream到达. 一切都进展顺利,但是,当我
我想实现在服务器上上传的某些文件的可恢复的即时哈希生成.文件很大所以我正在使用MessageDigest类的update(byte [])方法(如此处所述,例如: How can I generate an MD5 hash?),因为新字节从HttpServletRequest的InputStream到达.

一切都进展顺利,但是,当我想添加可恢复的上传支持时,它变得有趣.如果上载过早终止,则不完整的文件将存储在磁盘上.但是,控制器(和底层服务)退出,因此MessageDigest对象丢失.在此之前,我可以将MessageDigest对象序列化到磁盘(或DB,无关紧要)的方式,当我再次反序列化对象时,它将记住它的临时状态,所以当我恢复上传(从确切它之前被终止的地方,所以没有字节是冗余的,也没有一些字节缺失)并继续update()反序列化的MessageDigest,最终我得到了相同的结果(哈希),好像文件一次上传完整一样?

解决方法

获取其中一个自定义MD5实现,如 this one或 this one.使其可序列化或仅将其内部状态公开.上传中止时保留状态,并在恢复上载时恢复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读