package com.fuzamei.util; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.MessageDigest; public class HashXiZhiUtil { public static byte[] getMd5(String input) { try { byte[] by = input.getBytes("UTF-8"); MessageDigest det = MessageDigest.getInstance("SHA"); return det.digest(by); } catch (Exception e) { e.printStackTrace(); } return null; } public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } public static String getMD5Checksum(String filename) throws Exception { return getMD5Checksum(new File(filename)); } public static String getMD5Checksum(File file) throws Exception { byte[] b = createChecksum(file); String result = ""; for (int i = 0; i < b.length; i++) { result += Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1);// 加0x100是因为有的b[i]的十六进制只有1位 } return result; } public static byte[] createChecksum(String filename) throws Exception { return createChecksum(new File(filename)); } public static byte[] createChecksum(File file) throws Exception { InputStream fis = new FileInputStream(file); // 将流类型字符串转换为String类型字符串 byte[] buffer = new byte[1024]; MessageDigest complete = MessageDigest.getInstance("MD5"); // 如果想使用SHA-1或SHA-256,则传入SHA-1,SHA-256 int numRead; do { numRead = fis.read(buffer); // 从文件读到buffer,最多装满buffer if (numRead > 0) { complete.update(buffer, 0, numRead); // 用读到的字节进行MD5的计算,第二个参数是偏移量 } } while (numRead != -1); fis.close(); return complete.digest(); } /* * public static void main(String[] args) { * System.out.println(HashXiZhiUtil.getMd5("D:\\xiangnu\\123.doc")); * System.out.println(HashXiZhiUtil.bytesToHexString(HashXiZhiUtil.getMd5( * "D:\\xiangnu\\123.doc"))); * System.out.println(HashXiZhiUtil.bytesToHexString(HashXiZhiUtil.getMd5( * "D:\\xiangnu\\123.doc"))); } */ }