package com.whyc.util; import org.apache.commons.codec.digest.DigestUtils; public class MD5Util { /**加密*/ public static String encryptMD5(String data){ String result=null; if(data!=null && data.length()>0){ result= DigestUtils.md5Hex(data); } return result; } /** * 使用timestamp+盐方式,进行签名验证 * 当前时间戳为13位数 */ public static boolean checkSignMD5(String time,String randomStr,String sign){ String usefulNum = randomStr; //加盐方式,根据末尾的值进行不同的加密规则 char lastChar = time.charAt(12); int lastNum = Integer.parseInt(String.valueOf(lastChar)); switch (lastNum){ //在第一位加字符串 rd@c3doed case 0: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3dozero");break; case 1: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doenoe");break; case 2: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doktwo");break; case 3: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3dolthree");break; case 4: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doexfour");break; case 5: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doedefive");break; case 6: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doedhsix");break; case 7: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doedtseven");break; case 8: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doedbeight");break; case 9: usefulNum += time.replace(String.valueOf(lastChar),"rd@c3doedrnine");break; } //MD5加密后 String signNow = encryptMD5(usefulNum); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10; i++) { sb.append(signNow.charAt(i * 2)); } String signResult = sb.append(signNow).toString(); return sign.equals(signResult); } }