zoukankan      html  css  js  c++  java
  • JAVA获取文件MD5值

    https://blog.csdn.net/linyu19872008/article/details/84399914

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.nio.MappedByteBuffer;
    import java.nio.channels.FileChannel;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
     
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
     
    public class MD5FileUtil {
        private static final Logger logger = LoggerFactory
                .getLogger(MD5FileUtil.class);
        protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6',
                '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
        protected static MessageDigest messagedigest = null;
        static {
            try {
                messagedigest = MessageDigest.getInstance("MD5");
            } catch (NoSuchAlgorithmException e) {
                logger.error("MD5FileUtil messagedigest初始化失败", e);
            }
        }
     
        public static String getFileMD5String(File file) throws IOException {
            FileInputStream in = new FileInputStream(file);
            FileChannel ch = in.getChannel();
            MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
                    file.length());
            messagedigest.update(byteBuffer);
            return bufferToHex(messagedigest.digest());
        }
     
        public static String getMD5String(String s) {
            return getMD5String(s.getBytes());
        }
     
        public static String getMD5String(byte[] bytes) {
            messagedigest.update(bytes);
            return bufferToHex(messagedigest.digest());
        }
     
        private static String bufferToHex(byte bytes[]) {
            return bufferToHex(bytes, 0, bytes.length);
        }
     
        private static String bufferToHex(byte bytes[], int m, int n) {
            StringBuffer stringbuffer = new StringBuffer(2 * n);
            int k = m + n;
            for (int l = m; l < k; l++) {
                appendHexPair(bytes[l], stringbuffer);
            }
            return stringbuffer.toString();
        }
     
        private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
            char c0 = hexDigits[(bt & 0xf0) >> 4];
            char c1 = hexDigits[bt & 0xf];
            stringbuffer.append(c0);
            stringbuffer.append(c1);
        }
     
        public static boolean checkPassword(String password, String md5PwdStr) {
            String s = getMD5String(password);
            return s.equals(md5PwdStr);
        }
     
        public static void main(String[] args) throws IOException {
            long begin = System.currentTimeMillis();
     
            File big = new File("D:\\temp\\jre-7u11-linux-i586.tar.gz");
            String md5 = getFileMD5String(big);
     
            long end = System.currentTimeMillis();
            System.out.println("md5:" + md5);
            System.out.println("time:" + ((end - begin) / 1000) + "s");
     
        }
     
    }
  • 相关阅读:
    图片保持比例居中显示
    登录后跳转到登录前的页面
    如何为网站添加百度统计功能
    项目更新到公网服务器的操作步骤
    jQuery Mobile中表单的使用体会
    手机端静态网页制作需要注意的几个问题
    bootstrap分页插件的使用
    Dell7040mt安装win7系统说明
    linux静态ip的设置
    eclipse项目有红叉的解决办法
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/15748397.html
Copyright © 2011-2022 走看看