| | |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 使用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 = (String) EncryptionMD5(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); |
| | | } |
| | | } |