我现在在java中有这样一个需求
有一个文件,分两段写入
我需要先计算第一段的MD5值,然后保存,然后过段时间(程序会退出)再开始写第二段,然后需要计算整个文件的MD5值(但是不想重新读取第一段的文件信息)
我的理解是这样的 MD5的散列算法
1、先读取第一段信息,读入会生成一个中间值(非最终散列值),存储该中间值,生成第一段散列值
2、计算全文的MD5值的时候,先读取中间值,然后再读取第二段信息,最终生成全文散列值
关键点在中间值怎么获取,各位有没有好的思路呢?
java MD5 分次分段获取整体摘要
答案:2 悬赏:70 手机版
解决时间 2021-12-30 00:54
- 提问者网友:你挡着我发光了
- 2021-12-29 14:28
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-12-29 15:02
理论来说。没有。换一个思路。
你指的是大文件的情况下,一次计算不了md5对吗。
你可以试试用流的方式读取。每次update md5对象。最后在 digest 。
FileInputStream f = new FileInputStream(new File("bigFile.txt"));
MessageDigest digest = MessageDigest.getInstance("md5");
byte[] buffer = new byte[8192];
int len = 0;
while (-1 != (len = f.read(buffer))) {
digest.update(buffer,0,len);
}
byte[] md5hash = digest.digest(); or
//fast_md5 lib
String hash = MD5.asHex(MD5.getHash(new File(filename)));
你指的是大文件的情况下,一次计算不了md5对吗。
你可以试试用流的方式读取。每次update md5对象。最后在 digest 。
FileInputStream f = new FileInputStream(new File("bigFile.txt"));
MessageDigest digest = MessageDigest.getInstance("md5");
byte[] buffer = new byte[8192];
int len = 0;
while (-1 != (len = f.read(buffer))) {
digest.update(buffer,0,len);
}
byte[] md5hash = digest.digest(); or
//fast_md5 lib
String hash = MD5.asHex(MD5.getHash(new File(filename)));
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯