2

我正在研究存储系统。用户上传文件到服务器。

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

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

多谢你们

4

2 回答 2

3

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

于 2013-01-30T18:14:09.703 回答
1

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

缓冲阅读器 = ...;
字符[MY_ARRAY_SIZE] buf = ...;

而(真){
  int count = reader.read(buf, 0, buf.length);
  如果(计数== -1){休息};

  /* 你需要检查正确的 API 并自己处理错误 */
  md5.add(buf, 计数);
  sha256.add(buf, count);
}

字符串 md5sum = base64(md5.finalize()); // 假设一个合适的 base64 方法
字符串 sha256sum = base64(sha256.finalize());

于 2013-01-30T18:19:45.437 回答