我正在开发一个存储系统。用户将文件上载到服务器。
在服务器端,我想实现一个程序来使用MD5和SHA1来获取文件的校验和。
我知道如何使用DigestInputStream函数计算校验和,但似乎一次只支持一种方法(MD5或SHA1)。 如何在JAVA中处理上传流时同时计算MD5和SHA1?
谢谢你们
答案 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());