消息摘要--文件校验

import  java.io.File;
import  java.io.FileInputStream;
import  java.security.DigestInputStream;
import  java.security.MessageDigest;
import  static  org.junit.Assert.*;
import  org.apache.commons.codec.binary.Hex;
import  org.apache.commons.codec.digest.DigestUtils;

public  class  FileMD5 {

         public  static  String checkMessageDigest()  throws  Exception{
              FileInputStream fis=  new  FileInputStream( new  File( "E:/ACM/in.txt" ));
                //初始化,并指定md5算法
              DigestInputStream dis=  new  DigestInputStream(fis,MessageDigest.getInstance(  "md5" ));
              
                byte [] buffer= new  byte [1024];
                int readLen=dis.read(buffer,0,1024);//读,并且会update这个message digest
                while (readLen>-1){
                     readLen=dis.read(buffer, 0, 1024);
              }
              dis.close();
              
              MessageDigest md=dis.getMessageDigest();  //获取消息摘要对象
                byte [] b=md.digest(); //摘要处理
                //十六进制处理
              String md5Hex=Hex. encodeHexString(b);
              System.  out .println(md5Hex);
                return  md5Hex;
       }
       
         public  static  String checkMessageDigestUtils()  throws  Exception{
              FileInputStream fis=  new  FileInputStream( new  File( "E:/ACM/in.txt" ));
              String md5Hex=DigestUtils.md5Hex(fis); //包装,并获取md5,十六进制
              fis.close();
              System.  out .println(md5Hex);
                return  md5Hex;
       }
       
         public  static  void  main(String[] args)  throws  Exception {
                //  TODO  Auto-generated method stub
              String md51= checkMessageDigest();
              String md52= checkMessageDigestUtils();
               assertEquals(md51,md52); //判断两个方法计算的MD5值是否一致,不一致会抛出异常
       }
}

转载于:https://www.cnblogs.com/littlefishxu/p/3969181.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值