Merge remote-tracking branch 'origin/master'
commit
f07a4b1df6
@ -0,0 +1,27 @@
|
||||
package com.baiye.constant;
|
||||
|
||||
/**
|
||||
* 有关加解密的常量类
|
||||
*/
|
||||
public class SecretConstant {
|
||||
|
||||
/**
|
||||
* yuyou address
|
||||
*/
|
||||
public static final String SECRET_DECRYPT_YY_URL = "https://bd.hzdaba.cn:8085/v3/Accounts/yuyou_bd/BigData/DecryptTel";
|
||||
|
||||
/**
|
||||
* yuyou sign
|
||||
*/
|
||||
public static final String SECRET_DECRYPT_YY_SIG = "7f49e3f9c17c0f3c8fca84168161ed37";
|
||||
|
||||
/**
|
||||
* yuyou id
|
||||
*/
|
||||
public static final String SECRET_DECRYPT_YY_ID = "yuyou_bd";
|
||||
|
||||
/**
|
||||
* 时间戳格式
|
||||
*/
|
||||
public static final String SECRET_DECRYPT_TIME_FORMATE = "yyyyMMddHHmmss";
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.baiye.pojo;
|
||||
|
||||
public class SecretResponseBean {
|
||||
|
||||
private String result;
|
||||
|
||||
private String reason;
|
||||
|
||||
private String tels;
|
||||
|
||||
public String getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(String result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
public String getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
public void setReason(String reason) {
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
public String getTels() {
|
||||
return tels;
|
||||
}
|
||||
|
||||
public void setTels(String tels) {
|
||||
this.tels = tels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SecretResponseBean{" +
|
||||
"result='" + result + '\'' +
|
||||
", reason='" + reason + '\'' +
|
||||
", tels='" + tels + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
package com.baiye.util;
|
||||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import cn.hutool.http.Header;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import com.baiye.constant.SecretConstant;
|
||||
import com.baiye.pojo.SecretResponseBean;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author jt
|
||||
*/
|
||||
@Slf4j
|
||||
public class DecryptPnoUtil {
|
||||
private static final String HTTP_RESPONSE_JSON_FORMATE = "application/x-www-form-urlencoded";
|
||||
|
||||
public static String decryptPno(String origins) {
|
||||
HashMap<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("sig", createSig());
|
||||
paramMap.put("appid", SecretConstant.SECRET_DECRYPT_YY_ID);
|
||||
paramMap.put("tels", Base64.encode(origins));
|
||||
//链式构建请求
|
||||
String result = HttpRequest.post(SecretConstant.SECRET_DECRYPT_YY_URL)
|
||||
.header(Header.CONTENT_TYPE, HTTP_RESPONSE_JSON_FORMATE)
|
||||
.form(paramMap)
|
||||
.timeout(2_000)
|
||||
.execute().body();
|
||||
SecretResponseBean secretResponseBean = JSONUtil.toBean(result, SecretResponseBean.class);
|
||||
return Base64.decodeStr(secretResponseBean.getTels());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成 sig 值
|
||||
*
|
||||
* @return sig
|
||||
*/
|
||||
private static String createSig() {
|
||||
return SecureUtil.md5(
|
||||
SecretConstant.SECRET_DECRYPT_YY_ID
|
||||
+ SecretConstant.SECRET_DECRYPT_YY_SIG
|
||||
+ DateUtil.format(new Date(), SecretConstant.SECRET_DECRYPT_TIME_FORMATE));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 批量解密
|
||||
*
|
||||
* @param origins 待处理的加密数据
|
||||
* @return 处理后的解密数据
|
||||
*/
|
||||
public static SecretResponseBean batchDecryptPno(String origins) {
|
||||
|
||||
|
||||
HashMap<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("sig", createSig());
|
||||
paramMap.put("appid", SecretConstant.SECRET_DECRYPT_YY_ID);
|
||||
paramMap.put("tels", origins);
|
||||
|
||||
//链式构建请求
|
||||
String result = HttpRequest.post(SecretConstant.SECRET_DECRYPT_YY_URL)
|
||||
.header(Header.CONTENT_TYPE, HTTP_RESPONSE_JSON_FORMATE)
|
||||
.form(paramMap)
|
||||
.timeout(2_000)
|
||||
.execute().body();
|
||||
// 解析响应内容
|
||||
return JSONUtil.toBean(result, SecretResponseBean.class);
|
||||
}
|
||||
|
||||
public static List<String> decryptPhoneList(List<String> phoneSets) {
|
||||
List<String> decryptList = Lists.newArrayList();
|
||||
// 集合分割
|
||||
List<List<String>> partitions = ListUtil.partition(phoneSets, DefaultNumberConstants.TWO_HUNDRED);
|
||||
for (List<String> partition : partitions) {
|
||||
String join = Joiner.on(StrPool.COMMA).skipNulls().join(partition);
|
||||
// 批量解析号码
|
||||
SecretResponseBean responseBean = DecryptPnoUtil.batchDecryptPno
|
||||
(Base64.encode(StringUtils.substringBeforeLast(join, StrPool.COMMA)));
|
||||
if (ObjectUtil.isNotNull(responseBean) && ObjectUtil.isNotNull(responseBean.getTels())) {
|
||||
String decodeStr = Base64.decodeStr(responseBean.getTels());
|
||||
String[] split = decodeStr.split(StrPool.COMMA);
|
||||
if (split.length > DefaultNumberConstants.ZERO_NUMBER) {
|
||||
decryptList.addAll(Lists.newArrayList(Arrays.asList(split)));
|
||||
}
|
||||
}
|
||||
}
|
||||
return decryptList;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue