forked from rongchao/epmet-cloud-rizhao
6 changed files with 674 additions and 0 deletions
@ -0,0 +1,36 @@ |
|||
package com.epmet.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @author yan Lu |
|||
* @description 证明附件 |
|||
* @create 2023/7/12 16:54 |
|||
*/ |
|||
@Data |
|||
public class WzmDocumentRsultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -7440939498135959130L; |
|||
|
|||
/** |
|||
* 证明图片字符串 |
|||
*/ |
|||
private String base64str; |
|||
|
|||
/** |
|||
* 证明时间戳 |
|||
*/ |
|||
private String timeqrcode; |
|||
|
|||
/** |
|||
* 证明下载地址 |
|||
*/ |
|||
private String downloadurl; |
|||
|
|||
/** |
|||
* 证明名称 |
|||
*/ |
|||
private String zmresultname; |
|||
} |
@ -0,0 +1,38 @@ |
|||
package com.epmet.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @author yan Lu |
|||
* @description 证明信息 |
|||
* @create 2023/7/12 14:05 |
|||
*/ |
|||
@Data |
|||
public class WzmProjectResultDTO implements Serializable { |
|||
|
|||
|
|||
private static final long serialVersionUID = 5352302690919596385L; |
|||
|
|||
/** |
|||
* 证明开具部门名称 |
|||
*/ |
|||
private String dealouname; |
|||
|
|||
/** |
|||
* 证明类型 10:法人 20:个人 |
|||
*/ |
|||
private String applyertype; |
|||
|
|||
/** |
|||
* 证明guid |
|||
*/ |
|||
private String rowguid; |
|||
|
|||
/** |
|||
* 证明名称 |
|||
*/ |
|||
private String zmtaskname; |
|||
|
|||
} |
@ -0,0 +1,91 @@ |
|||
package com.epmet.controller; |
|||
|
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.service.ActWithoutProofService; |
|||
import com.epmet.util.ActWithoutProofUtils; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.GetMapping; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestParam; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author yan Lu |
|||
* @description 无证名办事 |
|||
* @create 2023/7/11 18:20 |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("actingWP") |
|||
public class ActWithoutProofController { |
|||
|
|||
@Autowired |
|||
private ActWithoutProofService actWithoutProofService; |
|||
|
|||
/** |
|||
* 获取所有证明信息 |
|||
* |
|||
* @param params |
|||
* @return |
|||
* @throws IOException |
|||
*/ |
|||
@GetMapping("getAll") |
|||
public Result getAll(@RequestParam Map<String, Object> params) throws IOException { |
|||
String token = ActWithoutProofUtils.getToken(); |
|||
if (StringUtils.isEmpty(token)) { |
|||
return new Result().error(-1, "获取token失败,请联系管理员!"); |
|||
} |
|||
params.put("token", token); |
|||
return new Result().ok(actWithoutProofService.getZmTasks(params)); |
|||
} |
|||
|
|||
/** |
|||
* 根据证件号码和证明id获取证明附件下载地址 |
|||
* |
|||
* @param params |
|||
* @return |
|||
* @throws IOException |
|||
*/ |
|||
@GetMapping("getWzmProject") |
|||
public Result getWzmProject(@RequestParam Map<String, Object> params) throws IOException { |
|||
String idCard = "", certType = "", qrcode = "", xm = "", zmtaskguid = ""; |
|||
String token = ActWithoutProofUtils.getToken(); |
|||
if (StringUtils.isEmpty(token)) { |
|||
return new Result().error(-1, "获取token失败,请联系管理员!"); |
|||
} |
|||
if (null != params.get("idCard")) { |
|||
idCard = (String) params.get("idCard"); |
|||
certType = "001";//身份证
|
|||
} |
|||
if (null != params.get("qrcode")) { |
|||
qrcode = (String) params.get("qrcode"); |
|||
certType = "002";//统一信用代码证
|
|||
} |
|||
if (null != params.get("xm")) { |
|||
xm = (String) params.get("xm"); |
|||
} |
|||
if (null != params.get("zmtaskguid")) { |
|||
zmtaskguid = (String) params.get("zmtaskguid"); |
|||
} |
|||
return new Result().ok(actWithoutProofService.getWzmProject(token, idCard, certType, qrcode, xm, zmtaskguid)); |
|||
} |
|||
|
|||
@GetMapping("redealProject") |
|||
public Result redealProject(@RequestParam Map<String, Object> params) throws IOException { |
|||
String idCard = "", zmtaskguid = ""; |
|||
String token = ActWithoutProofUtils.getToken(); |
|||
if (StringUtils.isEmpty(token)) { |
|||
return new Result().error(-1, "获取token失败,请联系管理员!"); |
|||
} |
|||
if (null != params.get("idCard")) { |
|||
idCard = (String) params.get("idCard"); |
|||
} |
|||
if (null != params.get("zmtaskguid")) { |
|||
zmtaskguid = (String) params.get("zmtaskguid"); |
|||
} |
|||
return new Result().ok(actWithoutProofService.redealProject(token, idCard, zmtaskguid)); |
|||
} |
|||
} |
@ -0,0 +1,48 @@ |
|||
package com.epmet.service; |
|||
|
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.dto.result.WzmDocumentRsultDTO; |
|||
import com.epmet.dto.result.WzmProjectResultDTO; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author yan Lu |
|||
* @description 描述 |
|||
* @create 2023/7/12 09:47 |
|||
*/ |
|||
public interface ActWithoutProofService { |
|||
|
|||
/** |
|||
* 获取所有证明信息 |
|||
* |
|||
* @param token |
|||
* @return |
|||
* @throws IOException |
|||
*/ |
|||
List<WzmProjectResultDTO> getZmTasks(Map<String, Object> token) throws IOException; |
|||
|
|||
/** |
|||
* 根据居民身份证获取证明 |
|||
* |
|||
* @param token |
|||
* @param idCard 身份证号码 |
|||
* @param certType 证件类型 001:身份证 002:统一信用代码证 |
|||
* @param qrcode 营业执照必填 |
|||
* @param xm 残疾人证和不动产权属状况证明必填 |
|||
* @param zmtaskguid 证明guid |
|||
*/ |
|||
WzmDocumentRsultDTO getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException; |
|||
|
|||
/** |
|||
* 重新开具证明 |
|||
* |
|||
* @param token |
|||
* @param idCard |
|||
* @param zmtaskguid |
|||
* @return |
|||
*/ |
|||
Result redealProject(String token, String idCard, String zmtaskguid) throws IOException; |
|||
} |
@ -0,0 +1,221 @@ |
|||
package com.epmet.service.impl; |
|||
|
|||
import com.alibaba.fastjson.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.epmet.commons.tools.exception.EpmetException; |
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.dto.result.WzmDocumentRsultDTO; |
|||
import com.epmet.dto.result.WzmProjectResultDTO; |
|||
import com.epmet.service.ActWithoutProofService; |
|||
import com.epmet.util.ActWithoutProofUtils; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.apache.http.client.config.RequestConfig; |
|||
import org.apache.http.client.methods.CloseableHttpResponse; |
|||
import org.apache.http.client.methods.HttpPost; |
|||
import org.apache.http.entity.StringEntity; |
|||
import org.apache.http.impl.client.CloseableHttpClient; |
|||
import org.apache.http.impl.client.HttpClients; |
|||
import org.apache.http.util.EntityUtils; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.io.IOException; |
|||
import java.nio.charset.Charset; |
|||
import java.util.ArrayList; |
|||
import java.util.Base64; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author yan Lu |
|||
* @description 描述 |
|||
* @create 2023/7/12 09:48 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
public class ActWithoutProofServiceImpl implements ActWithoutProofService { |
|||
|
|||
|
|||
@Override |
|||
public List<WzmProjectResultDTO> getZmTasks(Map<String, Object> param) throws IOException { |
|||
CloseableHttpClient client = null; |
|||
CloseableHttpResponse response = null; |
|||
try { |
|||
//封装查询参数
|
|||
JSONObject params = new JSONObject(); |
|||
//分页大小 默认10
|
|||
params.put("pageSize", null != param.get("pageSize") ? param.get("pageSize") : 10); |
|||
//当前页码 0开始
|
|||
params.put("currentPage", null != param.get("currentPage") ? param.get("pageSize") : 0); |
|||
//证明名称 模糊查询
|
|||
params.put("key", null != param.get("key") ? param.get("key") : ""); |
|||
//申请人类型
|
|||
params.put("type", null != param.get("type") ? param.get("type") : ""); |
|||
|
|||
//加密查询参数
|
|||
byte[] encryptResult = ActWithoutProofUtils.encrypt(params.toString(), ActWithoutProofUtils.KEY); |
|||
String encryptResultStr = ActWithoutProofUtils.parseByte2HexStr(encryptResult); |
|||
String baseEncode = Base64.getEncoder().encodeToString(encryptResultStr.getBytes()); |
|||
//请求
|
|||
client = HttpClients.createDefault(); |
|||
HttpPost post = new HttpPost(ActWithoutProofUtils.ALL_URL); |
|||
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setConnectionRequestTimeout(3000).setSocketTimeout(10000).build(); |
|||
post.setConfig(config); |
|||
post.setHeader("appKey", ActWithoutProofUtils.APP_KEY); |
|||
post.setHeader("Content-Type", "application/json"); |
|||
params = new JSONObject(); |
|||
params.put("token", param.get("token")); |
|||
params.put("params", baseEncode); |
|||
post.setEntity(new StringEntity(params.toString(), Charset.forName("UTF-8"))); |
|||
response = client.execute(post); |
|||
//返回
|
|||
JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); |
|||
List<WzmProjectResultDTO> resultList = new ArrayList<>(); |
|||
if (result.getString("code").equals("200")) { |
|||
JSONArray jsonArray = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getJSONArray("result"); |
|||
if (null != jsonArray && jsonArray.size() > 0) { |
|||
for (Object data : jsonArray) { |
|||
JSONObject j = JSONObject.parseObject(data.toString()); |
|||
WzmProjectResultDTO dto = new WzmProjectResultDTO(); |
|||
dto.setDealouname(j.getString("dealouname")); |
|||
dto.setRowguid(j.getString("rowguid")); |
|||
dto.setApplyertype(j.getString("applyertype")); |
|||
dto.setZmtaskname(j.getString("zmtaskname")); |
|||
resultList.add(dto); |
|||
} |
|||
} |
|||
log.info(result.toString()); |
|||
return resultList; |
|||
} else { |
|||
String erro = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("text"); |
|||
log.error(erro, result.toString()); |
|||
} |
|||
return new ArrayList<>(); |
|||
} catch (Exception e) { |
|||
throw new EpmetException("获取失败,请联系管理员!"); |
|||
} finally { |
|||
if (null != client) { |
|||
client.close(); |
|||
} |
|||
response.close(); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public WzmDocumentRsultDTO getWzmProject(String token, String idCard, String certType, String qrcode, String xm, String zmtaskguid) throws IOException { |
|||
CloseableHttpClient client = null; |
|||
CloseableHttpResponse response = null; |
|||
try { |
|||
//封装查询参数
|
|||
JSONObject params = new JSONObject(); |
|||
if (StringUtils.isNotEmpty(idCard)) { |
|||
//证件号码
|
|||
params.put("certnum", idCard); |
|||
} |
|||
if (StringUtils.isNotEmpty(qrcode)) { |
|||
//营业执照必填
|
|||
params.put("qrcode", qrcode); |
|||
//残疾人证和不动产权属状况证明必填
|
|||
params.put("xm", xm); |
|||
} |
|||
//证明guid
|
|||
params.put("zmtaskguid", zmtaskguid); |
|||
//证件类型 001 身份证 002 统一信用代码
|
|||
params.put("certtype", certType); |
|||
//调用部门名称
|
|||
params.put("searchou", ActWithoutProofUtils.LOGIN_ID); |
|||
//加密查询参数
|
|||
byte[] encryptResult = ActWithoutProofUtils.encrypt(params.toString(), ActWithoutProofUtils.KEY); |
|||
String encryptResultStr = ActWithoutProofUtils.parseByte2HexStr(encryptResult); |
|||
String baseEncode = Base64.getEncoder().encodeToString(encryptResultStr.getBytes()); |
|||
//请求
|
|||
client = HttpClients.createDefault(); |
|||
HttpPost post = new HttpPost(ActWithoutProofUtils.IdCard_URL); |
|||
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setConnectionRequestTimeout(3000).setSocketTimeout(10000).build(); |
|||
post.setConfig(config); |
|||
post.setHeader("appKey", ActWithoutProofUtils.APP_KEY); |
|||
post.setHeader("Content-Type", "application/json"); |
|||
post.setHeader("Accept-Encoding", "deflate/br"); |
|||
params = new JSONObject(); |
|||
params.put("token", token); |
|||
params.put("params", baseEncode); |
|||
post.setEntity(new StringEntity(params.toString(), Charset.forName("UTF-8"))); |
|||
response = client.execute(post); |
|||
//返回
|
|||
JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); |
|||
WzmDocumentRsultDTO dto = null; |
|||
if (result.getString("code").equals("200")) { |
|||
JSONArray jsonArray = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getJSONArray("result"); |
|||
if (null != jsonArray && jsonArray.size() > 0) { |
|||
JSONObject j = JSONObject.parseObject(jsonArray.get(0).toString()); |
|||
dto = new WzmDocumentRsultDTO(); |
|||
dto.setZmresultname(j.getString("zmresultname")); |
|||
dto.setDownloadurl(j.getString("downloadurl")); |
|||
dto.setTimeqrcode(j.getString("timeqrcode")); |
|||
dto.setBase64str(j.getString("base64str")); |
|||
} |
|||
log.info(result.toString()); |
|||
return dto; |
|||
} else { |
|||
String erro = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("text"); |
|||
log.error(erro, result.toString()); |
|||
return new WzmDocumentRsultDTO(); |
|||
} |
|||
} catch (Exception e) { |
|||
throw new EpmetException("获取失败,请联系管理员!"); |
|||
} finally { |
|||
if (null != client) { |
|||
client.close(); |
|||
} |
|||
response.close(); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public Result redealProject(String token, String idCard, String zmtaskguid) throws IOException { |
|||
CloseableHttpClient client = null; |
|||
CloseableHttpResponse response = null; |
|||
try { |
|||
//封装查询参数
|
|||
JSONObject params = new JSONObject(); |
|||
if (StringUtils.isNotEmpty(idCard)) { |
|||
params.put("certnum", idCard); |
|||
} |
|||
if (StringUtils.isNotEmpty(zmtaskguid)) { |
|||
params.put("zmtaskguid", zmtaskguid); |
|||
} |
|||
//加密查询参数
|
|||
byte[] encryptResult = ActWithoutProofUtils.encrypt(params.toString(), ActWithoutProofUtils.KEY); |
|||
String encryptResultStr = ActWithoutProofUtils.parseByte2HexStr(encryptResult); |
|||
String baseEncode = Base64.getEncoder().encodeToString(encryptResultStr.getBytes()); |
|||
//请求
|
|||
client = HttpClients.createDefault(); |
|||
HttpPost post = new HttpPost(ActWithoutProofUtils.REDEAL_URL); |
|||
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setConnectionRequestTimeout(3000).setSocketTimeout(10000).build(); |
|||
post.setConfig(config); |
|||
post.setHeader("appKey", ActWithoutProofUtils.APP_KEY); |
|||
post.setHeader("Content-Type", "application/json"); |
|||
params = new JSONObject(); |
|||
params.put("token", token); |
|||
params.put("params", baseEncode); |
|||
post.setEntity(new StringEntity(params.toString(), Charset.forName("UTF-8"))); |
|||
response = client.execute(post); |
|||
//返回
|
|||
JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); |
|||
if (result.getString("code").equals("200")) { |
|||
JSONObject json = JSONObject.parseObject(result.getJSONObject("data").getString("custom")); |
|||
return new Result().ok(json.getString("text")); |
|||
} else { |
|||
JSONObject json = JSONObject.parseObject(result.getJSONObject("data").getString("custom")); |
|||
return new Result().error(-1, json.getString("text")); |
|||
} |
|||
} catch (Exception e) { |
|||
throw new EpmetException("请求失败,请联系管理员!"); |
|||
} finally { |
|||
if (null != client) { |
|||
client.close(); |
|||
} |
|||
response.close(); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,240 @@ |
|||
package com.epmet.util; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.epmet.commons.tools.exception.EpmetException; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.http.client.config.RequestConfig; |
|||
import org.apache.http.client.methods.CloseableHttpResponse; |
|||
import org.apache.http.client.methods.HttpPost; |
|||
import org.apache.http.entity.StringEntity; |
|||
import org.apache.http.impl.client.CloseableHttpClient; |
|||
import org.apache.http.impl.client.HttpClients; |
|||
import org.apache.http.util.EntityUtils; |
|||
|
|||
import javax.crypto.*; |
|||
import javax.crypto.spec.SecretKeySpec; |
|||
import java.io.IOException; |
|||
import java.io.UnsupportedEncodingException; |
|||
import java.nio.charset.Charset; |
|||
import java.security.InvalidKeyException; |
|||
import java.security.NoSuchAlgorithmException; |
|||
import java.security.SecureRandom; |
|||
import java.util.Base64; |
|||
|
|||
/** |
|||
* @author yan Lu |
|||
* @description 无证名办事工具类 |
|||
* @create 2023/7/11 18:42 |
|||
*/ |
|||
@Slf4j |
|||
public class ActWithoutProofUtils { |
|||
|
|||
/** |
|||
* 认证用户 |
|||
*/ |
|||
public static final String LOGIN_ID = "zhihuishequ"; |
|||
|
|||
/** |
|||
* 数据加解密密钥 |
|||
*/ |
|||
public static final String KEY = "1122334455667788"; |
|||
|
|||
public static final String TOKEN_TITLE = "Epoint_WebSerivce_**##0601"; |
|||
|
|||
/** |
|||
* 加密后的参数值,没有KEY,先这么用 |
|||
*/ |
|||
public static final String PARAM = "NTBBNTg3NEFDOUYyODdENEUwRDEyNDJBM0ZBQzFFN0Q3QUMwODZCQzFDQjUxRDI1MjA2NUJCMzNGMkVGOTg2OA=="; |
|||
|
|||
/** |
|||
* AppKey 客户端密钥 |
|||
*/ |
|||
public static final String APP_KEY = "1119322649315508224"; |
|||
|
|||
/** |
|||
* 1、获取token URL |
|||
*/ |
|||
public static final String TOKEN_URL = "https://rzzhsq.shuzirizhao.cn/gateway/api/1/rzzwfw/rest/rzwzmrest/getToken"; |
|||
|
|||
/** |
|||
* 2、获取所有证明信息 |
|||
*/ |
|||
public static final String ALL_URL = "https://rzzhsq.shuzirizhao.cn/gateway/api/1/rzzwfw/rest/rzwzmcontroller/getZmTasks"; |
|||
|
|||
/** |
|||
* 3、根据证件号码和证明id获取证明附件下载地址 |
|||
*/ |
|||
public static final String IdCard_URL = "https://rzzhsq.shuzirizhao.cn/gateway/api/1/rzzwfw/rest/rzwzmcontroller/getWzmProject"; |
|||
|
|||
/** |
|||
* 4、重新开具 |
|||
*/ |
|||
public static final String REDEAL_URL = "https://rzzhsq.shuzirizhao.cn/gateway/api/1/rzzwfw/rest/rzwzmcontroller/redealProject"; |
|||
|
|||
/** |
|||
* 加密 |
|||
* |
|||
* @param content 需要加密的内容 |
|||
* @param password 加密密码 |
|||
* @return |
|||
*/ |
|||
public static byte[] encrypt(String content, String password) { |
|||
try { |
|||
KeyGenerator kgen = KeyGenerator.getInstance("AES"); |
|||
kgen.init(128, new SecureRandom(password.getBytes())); |
|||
SecretKey secretKey = kgen.generateKey(); |
|||
byte[] enCodeFormat = secretKey.getEncoded(); |
|||
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); |
|||
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
|
|||
byte[] byteContent = content.getBytes("utf-8"); |
|||
cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化
|
|||
byte[] result = cipher.doFinal(byteContent); |
|||
return result; // 加密
|
|||
} catch (NoSuchAlgorithmException e) { |
|||
e.printStackTrace(); |
|||
} catch (NoSuchPaddingException e) { |
|||
e.printStackTrace(); |
|||
} catch (InvalidKeyException e) { |
|||
e.printStackTrace(); |
|||
} catch (UnsupportedEncodingException e) { |
|||
e.printStackTrace(); |
|||
} catch (IllegalBlockSizeException e) { |
|||
e.printStackTrace(); |
|||
} catch (BadPaddingException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 将二进制转换成16进制 |
|||
* |
|||
* @param buf |
|||
* @return |
|||
*/ |
|||
public static String parseByte2HexStr(byte buf[]) { |
|||
StringBuffer sb = new StringBuffer(); |
|||
for (int i = 0; i < buf.length; i++) { |
|||
String hex = Integer.toHexString(buf[i] & 0xFF); |
|||
if (hex.length() == 1) { |
|||
hex = '0' + hex; |
|||
} |
|||
sb.append(hex.toUpperCase()); |
|||
} |
|||
return sb.toString(); |
|||
} |
|||
|
|||
/** |
|||
* 解密 解密的时候要传入byte数组 |
|||
* |
|||
* @param content 待解密内容 |
|||
* @param password 解密密钥 |
|||
* @return |
|||
*/ |
|||
public static byte[] decrypt(byte[] content, String password) { |
|||
try { |
|||
KeyGenerator kgen = KeyGenerator.getInstance("AES"); |
|||
kgen.init(128, new SecureRandom(password.getBytes())); |
|||
SecretKey secretKey = kgen.generateKey(); |
|||
byte[] enCodeFormat = secretKey.getEncoded(); |
|||
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); |
|||
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
|
|||
cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
|
|||
byte[] result = cipher.doFinal(content); |
|||
return result; // 加密
|
|||
} catch (NoSuchAlgorithmException e) { |
|||
e.printStackTrace(); |
|||
} catch (NoSuchPaddingException e) { |
|||
e.printStackTrace(); |
|||
} catch (InvalidKeyException e) { |
|||
e.printStackTrace(); |
|||
} catch (IllegalBlockSizeException e) { |
|||
e.printStackTrace(); |
|||
} catch (BadPaddingException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
public static void main(String[] args) { |
|||
JSONObject json = new JSONObject(); |
|||
// json.put("certnum", "371102199801156835");
|
|||
// json.put("certtype", "001");
|
|||
// json.put("zmtaskguid", "49c82fe4-6a14-49e0-a688-69ca4b6961dc");
|
|||
// json.put("zmtaskguid", "5cf03561-8e6e-4954-b9dd-eac898ae43f3");
|
|||
// json.put("searchou", "公安局1号窗口");
|
|||
// json.put("searchou", "zhihuishequ");
|
|||
// json.put("xm", "");
|
|||
|
|||
json.put("loginid", "zhihuishequ"); |
|||
String content = json.toString(); |
|||
String key = "1122334455667788"; |
|||
// 加密
|
|||
System.out.println("加密前:" + content); |
|||
|
|||
byte[] encryptResult = encrypt(content, key); |
|||
String encryptResultStr = parseByte2HexStr(encryptResult); |
|||
String baseEncode = Base64.getEncoder().encodeToString(encryptResultStr.getBytes()); |
|||
System.out.println("加密后:" + baseEncode); |
|||
|
|||
//解密
|
|||
String baseDecode = new String(Base64.getDecoder().decode(baseEncode)); |
|||
byte[] decryptFrom = parseHexStr2Byte(baseDecode); |
|||
byte[] decryptResult = decrypt(decryptFrom, key); |
|||
System.out.println("解密后:" + new String(decryptResult)); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 将16进制转换为二进制 |
|||
* |
|||
* @param hexStr |
|||
* @return |
|||
*/ |
|||
public static byte[] parseHexStr2Byte(String hexStr) { |
|||
if (hexStr.length() < 1) |
|||
return null; |
|||
byte[] result = new byte[hexStr.length() / 2]; |
|||
for (int i = 0; i < hexStr.length() / 2; i++) { |
|||
int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16); |
|||
int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16); |
|||
result[i] = (byte) (high * 16 + low); |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
public static String getToken() throws IOException { |
|||
CloseableHttpClient client = null; |
|||
CloseableHttpResponse response = null; |
|||
try { |
|||
client = HttpClients.createDefault(); |
|||
HttpPost post = new HttpPost(TOKEN_URL); |
|||
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setConnectionRequestTimeout(3000).setSocketTimeout(10000).build(); |
|||
post.setConfig(config); |
|||
post.setHeader("appKey", APP_KEY); |
|||
post.setHeader("Content-Type", "application/json"); |
|||
JSONObject infoJson = new JSONObject(); |
|||
infoJson.put("token", TOKEN_TITLE); |
|||
infoJson.put("params", PARAM); |
|||
post.setEntity(new StringEntity(infoJson.toString(), Charset.forName("UTF-8"))); |
|||
response = client.execute(post); |
|||
JSONObject result = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); |
|||
if (result.getString("code").equals("200")) { |
|||
log.info(result.toString()); |
|||
return JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("access_token"); |
|||
} else { |
|||
String erro = JSONObject.parseObject(result.getJSONObject("data").getString("custom")).getString("text"); |
|||
log.error(erro, result.toString()); |
|||
return ""; |
|||
} |
|||
} catch (Exception e) { |
|||
throw new EpmetException("获取token失败,请联系管理员!"); |
|||
} finally { |
|||
if (null != client) { |
|||
client.close(); |
|||
} |
|||
response.close(); |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue