|
@@ -2,6 +2,7 @@ package com.care.common.util;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
+import org.apache.commons.codec.binary.Base64;
|
|
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -12,17 +13,17 @@ import javax.crypto.spec.SecretKeySpec;
|
|
|
import java.security.AlgorithmParameters;
|
|
|
|
|
|
import java.security.Security;
|
|
|
-import java.util.Base64;
|
|
|
+
|
|
|
|
|
|
public class WxUtil {
|
|
|
|
|
|
- public static String getPhoneNumber(String encryptedData, String session_key, String iv) {
|
|
|
+ public static String getPhoneNumber(String encryptedData, String sessionKey, String iv) {
|
|
|
// 被加密的数据
|
|
|
- byte[] dataByte = Base64.getDecoder().decode(encryptedData);
|
|
|
+ byte[] dataByte = Base64.decodeBase64(encryptedData);
|
|
|
// 加密秘钥
|
|
|
- byte[] keyByte = Base64.getDecoder().decode(session_key);
|
|
|
+ byte[] keyByte = Base64.decodeBase64(sessionKey);
|
|
|
// 偏移量
|
|
|
- byte[] ivByte = Base64.getDecoder().decode(iv);
|
|
|
+ byte[] ivByte = Base64.decodeBase64(iv);
|
|
|
try {
|
|
|
// 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
|
|
|
int base = 16;
|
|
@@ -35,7 +36,7 @@ public class WxUtil {
|
|
|
}
|
|
|
// 初始化
|
|
|
Security.addProvider(new BouncyCastleProvider());
|
|
|
- Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
|
|
+ Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
|
|
|
SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
|
|
|
AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
|
|
|
parameters.init(new IvParameterSpec(ivByte));
|
|
@@ -43,13 +44,14 @@ public class WxUtil {
|
|
|
byte[] resultByte = cipher.doFinal(dataByte);
|
|
|
if (null != resultByte && resultByte.length > 0) {
|
|
|
String result = new String(resultByte, "UTF-8");
|
|
|
- System.out.println(result);
|
|
|
- //{"phoneNumber":"18800000000","watermark":{"appid":"wx2ba363fc4454f27c","timestamp":1586333901},"purePhoneNumber":"18800000000","countryCode":"86"}
|
|
|
return JSONObject.parseObject(result).getString("phoneNumber");
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+
|
|
|
return null;
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
}
|