如何在上传新文件的同时获取MD5和SHA1校验和?

时间:2013-01-30 18:12:00

标签: java file md5 sha1

我正在开发一个存储系统。用户将文件上载到服务器。

在服务器端,我想实现一个程序来使用MD5和SHA1来获取文件的校验和。

我知道如何使用DigestInputStream函数计算校验和,但似乎一次只支持一种方法(MD5或SHA1)。 如何在JAVA中处理上传流时同时计算MD5和SHA1?

谢谢你们

2 个答案:

答案 0 :(得分:3)

使用两个MessageDigest实例(一个用于MD5,一个用于SHA1)并将读取的字节输入两者。

答案 1 :(得分:1)

作为java-ish伪代码,因为您可以自己查找OpenSSL或BSafe或Java Crypto API的API ...

Buffered reader = ...;
char[MY_ARRAY_SIZE] buf = ...;

while( true ) {
  int count = reader.read(buf, 0, buf.length);
  if( count == -1 ) { break };

  /* You'll need to check for the right API and handle errors yourself */
  md5.add(buf, count);
  sha256.add(buf, count);
}

String md5sum = base64(md5.finalize()); // assumes an appropriate base64 method
String sha256sum = base64(sha256.finalize());