java -- java读取文件md5工具方法
2015-06-16 17:11
579 查看
package com.haier.util.commonUtil; 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; public class StringUtil { 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) { } } 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("F://HaierOtaUpdate_MST6A628_MST6A628_910100_V0.02.zip"); String md5 = getFileMD5String(big); long end = System.currentTimeMillis(); System.out.println("md5:" + md5); System.out.println("time:" + ((end - begin) / 1000) + "s"); } }
相关文章推荐
- Spring-Boot Not Finding JSP Pages in WAR File
- java jdbc 链接mysql插入数据中文显示乱码
- 从.net到java系列之jdbc
- Java类加载过程
- Spring Boot开发之弄月吟风 (三)
- java堆内存
- 使用Eclipse开发Teamcenter RAC
- Spring Boot开发之流水无情(二)
- ImageMagick使用for java(im4java)
- Spring Boot开发之明月千城(一)
- Java中JTextArea如何添加滚动条
- Java初级笔记_面向对象3
- 接口测试-自动化-Java-总结
- day03 Java基础
- java面向对象基础 封装性
- (转)spring ioc原理(看完后大家可以自己写一个spring)
- Spring学习笔记之 Spring IOC容器(一)
- Java学习笔记——自动装箱、拆箱 & String初始化
- [转]java 中的序列化是什么意思?有什么好处?
- JAVA中重载和重写的区别