我正在研究存储系统。用户上传文件到服务器。
在服务器端,我想实现一个程序来使用 MD5 和 SHA1 获取文件的校验和。
我知道如何使用 DigestInputStream 函数计算校验和,但它似乎一次只支持一种方法(MD5 或 SHA1)。在JAVA中处理上传流时,如何同时计算MD5和SHA1?
多谢你们
使用两个MessageDigest
实例(一个用于 MD5,一个用于 SHA1)并将您读取的字节输入两者。
作为 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());