zoukankan      html  css  js  c++  java
  • Java 文件完整性校验 MD5 sha1 sha256 sha224 sha384 sha512

    由于项目中需要使用文件做备份,并且要提供备份文件的下载功能。备份文件体积较大,为确保下载后的文件与原文件一致,需要提供文件完整性校验。

    网上有这么多此类文章,其中不少使用到了

    org.apache.commons.codec.digest.DigestUtils

    包中的方法,但是又自己做了大文件的拆分及获取相应校验码的转换。

    DigestUtils 包已经提供了为文件流生成校验码的功能,可以直接调用。经测试10几G的文件在30秒内可完成计算。

    (网上提供的一些自己拆分大文件的示例,文件较小时结果正确,文件较大时结果就不太可靠了)

    实现步骤如下:

    1. pom.xml 添加依赖
      <dependency>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
          <version>1.12</version>
      </dependency>
    2. 实现类:
      package file.integrity.check;
      
      import org.apache.commons.codec.digest.DigestUtils;
      import java.io.File;
      import java.io.FileInputStream;
      
      public class Application {
          public static void main(String[] args) throws Exception {
              File file = new File("/path/filename");
              FileInputStream fileInputStream = new FileInputStream(file);
              String hex = DigestUtils.sha512Hex(fileInputStream);
              System.out.println(hex);
          }
      }
    3.  或者:
      import org.apache.commons.codec.digest.DigestUtils;
      import static org.apache.commons.codec.digest.MessageDigestAlgorithms.SHA_512;
      import java.io.File;
      
      public class Application {
          public static void main(String[] args) throws Exception {
              File file = new File("/path/filename");
              String hex = new DigestUtils(SHA_512).digestAsHex(file);
              System.out.println(hex);
          }
      }
  • 相关阅读:
    时间处理得到UTC时间
    java数据同步陷阱
    360公司2016笔试题
    YTU 1439: 2.4.5 Fractions to Decimals 分数化小数
    YTU 2422: C语言习题 n个数逆序
    YTU 2421: C语言习题 矩形法求定积分
    YTU 2427: C语言习题 整数排序
    YTU 2832: 使用指针访问数组元素--程序填空
    YTU 1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
    HDU 1069:Monkey and Banana
  • 原文地址:https://www.cnblogs.com/matchless/p/10922860.html
Copyright © 2011-2022 走看看