chenjiahe
2021-10-21 6c1bfcd25d3bafcdf2765c5c9d0709a8f423eac4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.platform.verification;
 
 
import com.hx.util.StringUtils;
import com.hx.util.rsa.RSAUtil;
import com.platform.resultTool.PlatformCode;
import com.platform.resultTool.PlatformResult;
 
/**平台校验方法
 * @author CJH
 * @date 2021-10-20
 */
public class VerificationTool {
 
    /**校验方法请求
     * @param appId 用户的APPID
     * @param sign 用户签名
     * @param sys_appId 系统的appid
     * @param sys_private_key 系统的RSA秘钥
     * @return
     */
    public static PlatformResult verification(String appId,String sign,String sys_appId,String sys_private_key){
 
        if (StringUtils.isEmpty(sign)) {
            return PlatformResult.failure(PlatformCode.ERROR_SIGN, "签名错误");
        }
        if (StringUtils.isEmpty(appId)) {
            return PlatformResult.failure(PlatformCode.ERROR_APPIS, "APPID错误");
        }
 
        //校验appid是否存在
        if(!sys_appId.equals("appId")){
            return PlatformResult.failure(PlatformCode.ERROR_APPIS, "APPID错误");
        }
 
        //解密RSA
        String decrypt = null;
        try{
            decrypt = RSAUtil.privateDecrypt(sign, sys_private_key);
        }catch (Exception e){
 
        }
        if(StringUtils.isEmpty(decrypt)){
            return PlatformResult.failure(PlatformCode.ERROR_SIGN, "签名错误");
        }
 
        //decrypt格式:appId_时间戳_随机数(尽量少)
        String[] decrypts = decrypt.split("_");
        if(decrypts.length != 3){
            return PlatformResult.failure(PlatformCode.ERROR_SIGN, "签名错误");
        }
 
        if (!appId.equals(decrypts[0])) {
            return PlatformResult.failure(PlatformCode.ERROR_SIGN, "签名错误");
        }
        return PlatformResult.success();
    }
 
}