package com.mosty.hczx.utils; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.net.HttpURLConnection; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Utils { private static MessageDigest md5 = null; static { try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { System.out.println(e.getMessage()); } } /** * 用于获取一个String的md5值 * * @param string * @return */ public static String getMd5(String str) { byte[] bs = md5.digest(str.getBytes()); StringBuilder sb = new StringBuilder(40); for (byte x : bs) { if ((x & 0xff) >> 4 == 0) { sb.append("0").append(Integer.toHexString(x & 0xff)); } else { sb.append(Integer.toHexString(x & 0xff)); } } return sb.toString(); } public static void main(String[] args) { System.out.println(getMd5("abc@123")); } /** * 通过网站域名URL获取该网站的源码 * * @param url * @return String * @throws Exception */ public static InputStream getURLinStream(String pathUrl) throws Exception { URL url = new URL(pathUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); return conn.getInputStream(); // 通过输入流获取html二进制数据 } /** * 获取md5 * * @param path * @return * @throws Exception */ public static String getUrlMd5(String url) throws Exception { try { InputStream fis = getURLinStream(url); MessageDigest md = MessageDigest.getInstance("MD5"); byte[] buffer = new byte[1024]; int length = -1; while ((length = fis.read(buffer, 0, 1024)) != -1) { md.update(buffer, 0, length); } BigInteger bigInt = new BigInteger(1, md.digest()); return bigInt.toString(16); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } }