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);
|
}
|
}
|