package test.uuid; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { public static String toMD5(String psd) { MessageDigest messageDigest; StringBuffer md5StrBuff = new StringBuffer(); try { messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(psd.getBytes("UTF-8")); byte[] byteArray = messageDigest.digest(); for (int i = 0; i < byteArray.length; i++) { md5StrBuff.append(String.format("%02X", byteArray[i])); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return md5StrBuff.toString(); } public static String toMD5(byte[] b) throws Exception { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(b); byte[] byteArray = messageDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArray.length; i++) { md5StrBuff.append(String.format("%02X", byteArray[i])); } return md5StrBuff.toString(); } public static byte[] readRandomByte(String fileName) { byte[] begin = new byte[50 * 1024];// 文件�? byte[] middle = new byte[50 * 1024];// 中间部分 byte[] end = new byte[50 * 1024];// 文件�? try { FileInputStream fis = new FileInputStream(fileName); int t = fis.available(); BufferedInputStream bis = new BufferedInputStream(fis); bis.skip(-1); bis.read(begin, 0, begin.length); bis.skip(t / 2); bis.read(middle, 0, middle.length); bis.skip(t - end.length); bis.read(end, 0, end.length); bis.close(); fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } byte[] total = new byte[begin.length + middle.length + end.length]; for (int i = 0; i < begin.length; i++) { total[i] = begin[i]; } for (int i = 0; i < middle.length; i++) { total[i + begin.length] = middle[i]; } for (int i = 0; i < end.length; i++) { total[i + begin.length + middle.length] = end[i]; } return total; } /** * @param fileName * 包含路径的文件名 * */ public static String toMD5ForFile(String fileName) throws Exception { if (fileName == null || fileName.equals("")) { return fileName; } FileInputStream fis = new FileInputStream(fileName); byte[] buffer = new byte[128 * 1024]; ByteArrayOutputStream outStream = new ByteArrayOutputStream(); int len = 0; while ((len = fis.read(buffer)) != -1) { outStream.write(buffer, 0, len); } outStream.flush(); outStream.close(); fis.close(); MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(outStream.toByteArray()); byte[] byteArray = messageDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArray.length; i++) { md5StrBuff.append(String.format("%02X", byteArray[i])); } return md5StrBuff.toString(); } }