zoukankan      html  css  js  c++  java
  • java 文件md5+字符串md5 实现

    import org.apache.commons.codec.binary.Hex;
    import org.apache.commons.codec.digest.DigestUtils;
    import org.apache.log4j.Logger;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    /**
     * md5算法工具
     */
    public class MD5BigFileUtil {
        private final static Logger logger = Logger.getLogger(MD5BigFileUtil.class);
        static MessageDigest md = null;
    
        static {
            try {
                md = MessageDigest.getInstance("MD5");
            } catch (NoSuchAlgorithmException ne) {
                logger.error("NoSuchAlgorithmException: md5", ne);
            }
        }
    
        /**
         * 对一个文件求他的md5值
         * @param f 要求md5值的文件
         * @return md5串
         */
        public static String md5(File f) {
            FileInputStream fis = null;
            try {
                fis = new FileInputStream(f);
                //100KB each time
                byte[] buffer = new byte[102400];
                int length;
                long loopCount = 0;
                while ((length = fis.read(buffer)) != -1) {
                    md.update(buffer, 0, length);
                    loopCount++;
                }
                
                logger.debug("read file to buffer loopCount:"+loopCount);
    
                return new String(Hex.encodeHex(md.digest()));
            } catch (FileNotFoundException e) {
                logger.error("md5 file " + f.getAbsolutePath() + " failed:" + e.getMessage());
                return null;
            } catch (IOException e) {
                logger.error("md5 file " + f.getAbsolutePath() + " failed:" + e.getMessage());
                return null;
            } finally {
                try {
                    if (fis != null) fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 求一个字符串的md5值
         * @param target 字符串
         * @return md5 value
         */
        public static String md5(String target) {
            return DigestUtils.md5Hex(target);
        }
        
        public static void main(String[] args) {
            long begin =System.currentTimeMillis();
            System.out.println(md5(new File("G:/BT/PremierePro_6_LS7.7z")));
            long end =System.currentTimeMillis();
            System.out.println("time:"+((end-begin)/1000)+"s");
            
            System.out.println(md5("hello world"));
        }
    
    }
  • 相关阅读:
    系统综合实践_5
    系统综合实践_4
    系统综合实践_3
    系统综合实践_2
    系统综合实践_1
    软件工程17—第09组 Beta版本演示
    软件工程16—第09组 Beta冲刺(4/4)
    软工实践个人总结
    第06组 Beta版本演示
    第06组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/yanghuahui/p/3139424.html
Copyright © 2011-2022 走看看