package com.mandi.common; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Random; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class BasicMethod { public static String byte2hexStr(byte[] buf){ if(buf==null) return null; StringBuffer sb=new StringBuffer(); for(int i=0;i<buf.length;i++){ String hex=Integer.toHexString(buf[i]&0xff); if(hex.length()==1) { hex='0'+hex; } sb.append(hex); } return sb.toString(); } public static byte[] hexStr2bytes(String str){ if(str==null||str.length()<1) return null; byte[] result=new byte[str.length()>>1]; for(int i=0;i<str.length();i+=2){ int high=Integer.parseInt(str.substring(i, i+1),16); int low=Integer.parseInt(str.substring(i+1, i+2),16); result[i>>1]=(byte)(((high<<4)&0xf0)+low); } return result; } /** * Aes åŠ å¯† * @param source * @param password * @return */ public static String encryptAES(String source,String password){ if(source==null||password==null) return null; try { KeyGenerator keygen=KeyGenerator.getInstance("AES"); SecureRandom sr=SecureRandom.getInstance("SHA1PRNG"); sr.setSeed(password.getBytes()); keygen.init(128,sr); SecretKey key=keygen.generateKey(); byte[] keyendoce=key.getEncoded(); SecretKeySpec keyspec=new SecretKeySpec(keyendoce, "AES"); Cipher cipher=Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE,keyspec ); byte[] sbytes=null; try { sbytes = cipher.doFinal(source.getBytes("utf8")); } catch (UnsupportedEncodingException e) { System.out.println("åŠ å¯†è¿‡ç¨‹ä¸ï¼Œgetbyte有错误!"); e.printStackTrace(); } return byte2hexStr(sbytes); //这里也å¯ä»¥ç”¨base64æ¥è¡¨ç¤º,è¿™æ ·è§£å¯†çš„æ—¶å€™åè§£æžbase64 } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return ""; } public static String decryptAES(String source,String password) { if(source==null||password==null) return ""; byte[] sbytes=hexStr2bytes(source); try { KeyGenerator keygen=KeyGenerator.getInstance("AES"); SecureRandom sr=SecureRandom.getInstance("SHA1PRNG"); sr.setSeed(password.getBytes()); keygen.init(128,sr); SecretKey key=keygen.generateKey(); byte[] keyendoce=key.getEncoded(); SecretKeySpec keyspec=new SecretKeySpec(keyendoce, "AES"); Cipher cipher=Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, keyspec); byte[] dbytes=cipher.doFinal(sbytes); try { return new String(dbytes,"utf8"); } catch (UnsupportedEncodingException e) { System.out.println("解密过程ä¸ï¼Œç¼–ç 错误!"); e.printStackTrace(); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return ""; } public static String encryptSHA(String source)//SHA 摘è¦ï¼Œä¸å¯é€† { if(source==null) return null; MessageDigest md; try { md = MessageDigest.getInstance("SHA-256"); byte[] bytes=md.digest(source.getBytes()); return byte2hexStr(bytes); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } public static String encryptMD5(String source)//SHA 摘è¦ï¼Œä¸å¯é€† { if(source==null) return null; MessageDigest md; try { md = MessageDigest.getInstance("md5"); byte[] bytes=md.digest(source.getBytes("utf-8")); return byte2hexStr(bytes); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return ""; } public static String encryptSHA1(String source)//SHA 摘è¦ï¼Œä¸å¯é€† { if(source==null) return null; MessageDigest md; try { md = MessageDigest.getInstance("SHA-1"); byte[] bytes=md.digest(source.getBytes()); return byte2hexStr(bytes); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } public static boolean checkEmailFormat(String email) { if(email==null) return false; String patterns="[a-zA-Z]+([-.][a-zA-Z0-9_-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*" +"(\\.[A-Za-z]{2,3})$"; Pattern p=Pattern.compile(patterns); Matcher m=p.matcher(email); if(m.matches()) return true; return false; } public static boolean checkvalidusername(String username) { if(username==null) return false; String patterns="^[a-zA-Z][a-zA-Z0-9._-]{5,50}"; Pattern p=Pattern.compile(patterns); Matcher m=p.matcher(username); if(m.matches()) return true; return false; } public static boolean checkIP(String ip) { if(ip==null) return false; String pattern="^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$"; Pattern p=Pattern.compile(pattern); Matcher m=p.matcher(ip); if(m.matches()) return true; return false; } /** * 判æ–date是å¦å¤„äºŽå½“å‰æ—¶é—´-dayså‰ * @param date * @param days * @return */ public static boolean before(Date date, int days) { if(date==null) return false; Date now=new Date(System.currentTimeMillis()); Calendar nowcal=Calendar.getInstance(); nowcal.setTime(now); Calendar datecal=Calendar.getInstance(); datecal.setTime(date); nowcal.add(Calendar.DAY_OF_MONTH, -days); if(datecal.before(nowcal)) return true; return false; } /** * 判æ–date是å¦å¤„äºŽå½“å‰æ—¶é—´+daysåŽ * @param date * @param days * @return */ public static boolean after(Date date,int days) { if(date==null) return false; Date now=new Date(System.currentTimeMillis()); Calendar nowcal=Calendar.getInstance(); nowcal.setTime(now); Calendar datecal=Calendar.getInstance(); datecal.setTime(date); nowcal.add(Calendar.DAY_OF_MONTH, days); if(datecal.after(nowcal)) return true; return false; } /** * 讲stringå—符串,规整化掉sql里é¢çš„特殊å—符'å’Œ\ */ public static String sqlformat(String param) { if(param==null) return null; param=param.trim(); String t=param.replaceAll("'", "\\\\'"); t=t.replaceAll("\"", "\\\\\""); return t; } /** * 使用Jsoup包解æžhtml content,并æå–出所有的img超链接 * @param content * @return */ public static String parseimgs(String content) { if(content==null) return null; Document doc=Jsoup.parse(content); Elements eles=doc.select("img"); Iterator<Element> ele=eles.iterator(); Set<String> set=new HashSet<String>(); while(ele.hasNext()) { Element e=ele.next(); set.add(e.attr("src")); } if(set.size()>0) return Jacksonmethod.tojson(set, false); return null; } public static int countDays(Date stime,Date etime){ if(stime==null||etime==null) return 0; return (int)((etime.getTime() - stime.getTime()) / (1000L * 60L * 60L * 24L)); } public static String randomstr(int length) { if(length<=0) return null; char[] chars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; Random r=new Random(System.currentTimeMillis()); int charlength=chars.length; StringBuffer sb=new StringBuffer(); for (int i = 0; i <length; i++) { int ri=r.nextInt(charlength); sb.append(chars[ri]); } return sb.toString(); } public static String first2Upper(String str) { if(str==null) return null; char[] cs=str.toCharArray(); cs[0]-=32; return String.valueOf(cs); } public static String getNow(Date now,String format){ Date d=new Date(); if(now!=null){ d=now; } SimpleDateFormat sdf=new SimpleDateFormat(format==null?"yyyy-MM-dd HH:mm:ss":format); return sdf.format(d); } }