shuzhan vor 2 Jahren
Ursprung
Commit
ade016f730

+ 9 - 3
common/src/main/java/com/jpsoft/employment/modules/common/utils/AESDATAUtil.java

@@ -20,20 +20,26 @@ import java.security.spec.InvalidParameterSpecException;
 import java.util.Arrays;
 
 public class AESDATAUtil {
+    //算法名
+    public static final String KEY_NAME = "AES";
+    // 加解密算法/模式/填充方式
+    // ECB模式只用密钥即可对数据进行加密解密,CBC模式需要添加一个iv
+    public static final String CIPHER_ALGORITHM = "AES/CBC/PKCS7Padding";
+
     /**
      * 解密
      *
      * @param content 目标密文
-     * @param key     秘钥
+     * @param sessionKey     秘钥
      * @param iv      偏移量
      * @return
      */
-    public static String decrypt(@NotNull String content, @NotNull String key, @NotNull String iv) {
+    public static String decrypt(@NotNull String content, @NotNull String sessionKey, @NotNull String iv) {
         String result = "";
         // 被加密的数据
         byte[] dataByte = Base64.decodeBase64(content);
         // 加密秘钥
-        byte[] keyByte = Base64.decodeBase64(key);
+        byte[] keyByte = Base64.decodeBase64(sessionKey);
         // 偏移量
         byte[] ivByte = Base64.decodeBase64(iv);
         try {

+ 1 - 0
web/src/main/java/com/jpsoft/employment/config/WebMvcConfig.java

@@ -70,6 +70,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 				.excludePathPatterns("/mobile/job/jobHuntDetail")
 				.excludePathPatterns("/mobile/training/trainingList")
 				.excludePathPatterns("/mobile/training/trainingDetail")
+				.excludePathPatterns("/wechat/decryptData")
 		;
 
 

+ 11 - 4
web/src/main/java/com/jpsoft/employment/modules/wechat/controller/WxController.java

@@ -258,13 +258,20 @@ public class WxController {
 //                valueOperations.set("accessToken",token.getToken(),2, TimeUnit.HOURS);
 //            }
 
+            String phone = "";
+            SessionKey sessionKey = WeixinUtil.getSessionKey(wxPropertiesApplet.getAppId(), wxPropertiesApplet.getAppSecret(),code);
             encryptedData = encryptedData.replace(" ", "+");
-            String data = AESDATAUtil.decrypt(encryptedData, code, iv);
-
-            return new MessageResult(true, "成功", "", 200);
+            String data = AESDATAUtil.decrypt(encryptedData, sessionKey.getSessionKey(), iv);
+            if(StringUtils.isNotEmpty(data)) {
+                JSONObject userInfo = JSONObject.parseObject(data);
+                phone = userInfo.getString("purePhoneNumber");
+                return new MessageResult(true, "成功", phone, 200);
+            }else {
+                return new MessageResult(false, "获取失败", "", 500);
+            }
         } catch (Exception ex) {
             ex.printStackTrace();
-            return new MessageResult(false, "系统错误", "", 500);
+            return new MessageResult(false, "系统错误", ex.getMessage(), 500);
         }
     }
 }