以下片段都应该计算sha-1总和.但是对于同一个文件,他们计算出不同的sha-1总和.
//snippet1
byte[] byteArr = new byte[(int) uploadedFile.getLength()];
try {
stream = new BufferedInputStream(uploadedFile.getInputStream());
stream.read(byteArr);
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
md = MessageDigest.getInstance("SHA-1");
byte[] sha1hash = new byte[40];
md.update(byteArr, 0, byteArr.length);
sha1hash = md.digest();
//snippet2
md = MessageDigest.getInstance("SHA-1");
InputStream is = uploadedFile.getInputStream();
try {
is = new DigestInputStream(is, md);
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
sha1hash = md.digest();
Run Code Online (Sandbox Code Playgroud)
你能解释一下原因吗?
Joa*_*uer 12
你的两个片段都是错误的:
第一个剪辑从文件中读取一些(有效随机)字节数,并且无法保证读取整个文件(有关详细信息,请阅读JavaDocread()).
第二个剪切不会从InputStream中读取任何内容,因此返回空流的SHA-1(读取0个字节).
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |