暫未驗證
https://blog.csdn.net/u011311291/article/details/81173524
Java 文件完整性校驗 MD5 sha1 sha256 sha224 sha384 sha512
由于項目中需要使用文件做備份,并且要提供備份文件的下載功能。備份文件體積較大张遭,為確保下載后的文件與原文件一致躯枢,需要提供文件完整性校驗钙畔。
網(wǎng)上有這么多此類文章偷遗,其中不少使用到了
org.apache.commons.codec.digest.DigestUtils
包中的方法,但是又自己做了大文件的拆分及獲取相應校驗碼的轉換。
DigestUtils 包已經(jīng)提供了為文件流生成校驗碼的功能笑跛,可以直接調(diào)用付魔。經(jīng)測試10幾G的文件在30秒內(nèi)可完成計算。
(網(wǎng)上提供的一些自己拆分大文件的示例飞蹂,文件較小時結果正確几苍,文件較大時結果就不太可靠了)
實現(xiàn)步驟如下:
pom.xml 添加依賴
<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.12</version></dependency>
實現(xiàn)類:
package file.integrity.check;import org.apache.commons.codec.digest.DigestUtils;import java.io.File;import java.io.FileInputStream;publicclass Application {
? ? publicstaticvoidmain(String[] args)throws Exception {
? ? ? ? File file =newFile("/path/filename");
? ? ? ? FileInputStream fileInputStream =new FileInputStream(file);
? ? ? ? String hex = DigestUtils.sha512Hex(fileInputStream);
? ? ? ? System.out.println(hex);
? ? }
}
或者:
import org.apache.commons.codec.digest.DigestUtils;importstatic org.apache.commons.codec.digest.MessageDigestAlgorithms.SHA_512;import java.io.File;publicclass Application {
? ? publicstaticvoidmain(String[] args)throws Exception {
? ? ? ? File file =newFile("/path/filename");
? ? ? ? String hex =new DigestUtils(SHA_512).digestAsHex(file);
? ? ? ? System.out.println(hex);
? ? }
}