java后台实现微信小程序获取用户手机号
获取手机号 微信Api文档
1、控制层
@GetMapping("wx/decode")
Object create(String encrypted, String sessionKey, String iv);
2、Service
@Override
public Object create(String encrypted, String sessionKey, String iv) {
String str = "";
try {
str = DecodeUtil.wxDecrypt(encrypted, sessionKey, iv);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return ResponseUtil.ok(str);
}
3、DecodeUtil工具类
public static String wxDecrypt(String encrypted, String sessionKey, String iv) throws Exception {
byte[] encrypData = Base64.decodeBase64(encrypted);
byte[] ivData = Base64.decodeBase64(iv);
byte[] sKey = Base64.decodeBase64(sessionKey);
String decrypt = decrypt(sKey, ivData, encrypData);
return decrypt;
}
public static String decrypt(byte[] key, byte[] iv, byte[] encData) throws Exception {
AlgorithmParameterSpec ivSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
// 解析解密后的字符串
return new String(cipher.doFinal(encData), "UTF-8");
}
4、测试数据(已失效)
wxDecrypt("1K5kCctSjBDJQiliHb4lAdEcUDZ1dvBqjKHaS8ummwJBnVhyMrUC4g2LFA9sGURmH7QbTVydI98Jj0V1jVu7fMnQKQUv12D7fsqraHxdr4VwFhhdVsOhY4HllSwv18FeAhLoDZq6qNzSW7SX1LxPwXcyxcODJT8fzyMLR5l7P23+xocTIEbRxKizaWkfu+Dh+FQL6ipZ20F9mAtN33mZow==",
"JNM6V+hv0QS9hC1Ea1OyeQ==", "P0aDc1tsyNPvV+8x05k09A==");