我正在研究存储系统。用户将文件上载到服务器。
在服务器端,我想实现一个程序来使用 MD5 和 SHA1 获取文件的校验和。
我知道如何使用 DigestInputStream 函数计算校验和,但它似乎一次只支持一种方法(MD5 或 SHA1)。在 JAVA 中处理上传流时,如何同时计算 MD5 和 SHA1?
谢谢大家
使用两个MessageDigest
实例(一个用于 MD5,一个用于 SHA1),并将您读取的字节馈送到这两个实例中。
作为java式伪代码,因为您可以自己查找OpenSSL或BSafe的API或Java Crypto API...
缓冲读卡器 = ...;字符[MY_ARRAY_SIZE] buf = ...;而( 真 ) { int count = reader.read(buf, 0, buf.length); if( count == -1 ) { break }; /* 您需要检查正确的 API 并自己处理错误 */ md5.add(buf, count); sha256.add(buf, count);}字符串 md5sum = base64(md5.finalize());假设适当的 base64 方法字符串 sha256sum = base64(sha256.finalize());