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>1]; for(int i=0;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 ele=eles.iterator(); Set set=new HashSet(); 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