From 65b9b81171843545bc17a8e7167ff06c3d80e73d Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期一, 18 九月 2023 16:00:54 +0800
Subject: [PATCH] 调整上海接口加密问题
---
src/main/java/com/fzzy/order/OrderManager.java | 2
src/main/java/com/fzzy/api/utils/RSAUtils.java | 37 ++++++++---
src/main/java/com/fzzy/order/data/OrderData.java | 2
src/main/java/com/fzzy/push/sh2023/SH2023HttpClientUtil.java | 7 +-
src/main/java/com/fzzy/push/sh2023/dto/SH2023Api1101.java | 45 +-------------
src/main/java/com/fzzy/push/sh2023/SH2023OrderApiServiceImpl.java | 56 ++++++++++++++++++
src/main/java/com/fzzy/push/whhpjl/WhjlOrderApiServiceImpl.java | 2
src/main/java/com/fzzy/push/sh2023/SH2023ApiRemoteService.java | 20 ++++--
8 files changed, 106 insertions(+), 65 deletions(-)
diff --git a/src/main/java/com/fzzy/api/utils/RSAUtils.java b/src/main/java/com/fzzy/api/utils/RSAUtils.java
index 61d4e85..d94a600 100644
--- a/src/main/java/com/fzzy/api/utils/RSAUtils.java
+++ b/src/main/java/com/fzzy/api/utils/RSAUtils.java
@@ -12,6 +12,7 @@
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
+import java.util.Arrays;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
@@ -26,7 +27,7 @@
private static final String CHARSET = "utf-8";
- private static final int KEYSIZE = 2048;// 瀵嗛挜浣嶆暟
+ private static final int KEYSIZE = 1024;// 瀵嗛挜浣嶆暟
private static final int RESERVE_BYTES = 11;
private static final String ECB_PADDING = "RSA/ECB/PKCS1Padding";
@@ -41,6 +42,7 @@
String privateKeyStr = getPrivateKeyStr(map);
log.info("-----绉侀挜={}", privateKeyStr);
+ System.out.println(privateKeyStr.length());
String publicKeyStr = getPublicKeyStr(map);
log.info("-----鍏挜={}", publicKeyStr);
@@ -123,24 +125,37 @@
* @return 鍔犲瘑鍚庣殑瀵嗘枃
*/
public static String encrypt(String text, String publicKeyStr) {
+ String result = "";
try {
log.info("鏄庢枃瀛楃涓蹭负:[{}]", text);
+ // 鍔犲瘑
Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(publicKeyStr));
-
- // URLEncoder缂栫爜瑙e喅涓枃涔辩爜闂
- byte[] data = text.getBytes(StandardCharsets.UTF_8);
- // 鍔犲瘑鏃惰秴杩�117瀛楄妭灏辨姤閿欍�備负姝ら噰鐢ㄥ垎娈靛姞瀵嗙殑鍔炴硶鏉ュ姞瀵�
- byte[] enBytes = null;
- for (int i = 0; i < data.length; i += MAX_ENCRYPT_BLOCK) {
- // 娉ㄦ剰瑕佷娇鐢�2鐨勫�嶆暟锛屽惁鍒欎細鍑虹幇鍔犲瘑鍚庣殑鍐呭鍐嶈В瀵嗘椂涓轰贡鐮�
- byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(data, i, i + MAX_ENCRYPT_BLOCK));
- enBytes = ArrayUtils.addAll(enBytes, doFinal);
+ byte[] textArray = text.getBytes();
+ int textLength = textArray.length;
+ log.info("鍔犲瘑瀛楄妭鏁�={}", textLength);
+ // 鏈�澶у姞瀵嗗瓧鑺傛暟锛岃秴鍑烘渶澶у瓧鑺傛暟闇�瑕佸垎缁勫姞瀵�
+ int MAX_ENCRYPT_BLOCK = 117;
+ // 鏍囪瘑
+ int offSet = 0;
+ byte[] resultBytes = {};
+ byte[] cache = {};
+ while (textLength - offSet > 0) {
+ if (textLength - offSet > MAX_ENCRYPT_BLOCK) {
+ cache = cipher.doFinal(textArray, offSet, MAX_ENCRYPT_BLOCK);
+ offSet += MAX_ENCRYPT_BLOCK;
+ } else {
+ cache = cipher.doFinal(textArray, offSet, textLength - offSet);
+ offSet = textLength;
+ }
+ resultBytes = Arrays.copyOf(resultBytes, resultBytes.length + cache.length);
+ System.arraycopy(cache, 0, resultBytes, resultBytes.length - cache.length, cache.length);
}
- return Base64.getEncoder().encodeToString(enBytes);
+ result = Base64.getEncoder().encodeToString(resultBytes);
} catch (Exception e) {
throw new RuntimeException("鍔犲瘑瀛楃涓瞇" + text + "]鏃堕亣鍒板紓甯�", e);
}
+ return result;
}
/**
diff --git a/src/main/java/com/fzzy/order/OrderManager.java b/src/main/java/com/fzzy/order/OrderManager.java
index 2a05cf3..1e961bd 100644
--- a/src/main/java/com/fzzy/order/OrderManager.java
+++ b/src/main/java/com/fzzy/order/OrderManager.java
@@ -56,7 +56,7 @@
return;
}
OrderData data = JSONObject.parseObject(req.getData().toString(), OrderData.class);
-
+ data.setOrderid(req.getOrderid());
//鏍规嵁閰嶇疆淇℃伅鎵ц
OrderApiService service;
for (ApiConfs conf : apiConfList) {
diff --git a/src/main/java/com/fzzy/order/data/OrderData.java b/src/main/java/com/fzzy/order/data/OrderData.java
index aca6fdb..1d556e3 100644
--- a/src/main/java/com/fzzy/order/data/OrderData.java
+++ b/src/main/java/com/fzzy/order/data/OrderData.java
@@ -30,4 +30,6 @@
* 澶囨敞淇℃伅
*/
private String remark;
+
+ private String orderid;
}
diff --git a/src/main/java/com/fzzy/push/sh2023/SH2023ApiRemoteService.java b/src/main/java/com/fzzy/push/sh2023/SH2023ApiRemoteService.java
index 8d3b4e7..e1abe87 100644
--- a/src/main/java/com/fzzy/push/sh2023/SH2023ApiRemoteService.java
+++ b/src/main/java/com/fzzy/push/sh2023/SH2023ApiRemoteService.java
@@ -11,6 +11,7 @@
import com.fzzy.api.service.ApiTriggerService;
import com.fzzy.api.utils.*;
import com.fzzy.api.view.repository.*;
+import com.fzzy.order.data.OrderData;
import com.fzzy.push.sh2023.dto.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -108,8 +109,8 @@
//鑾峰彇鎸囦护id
String key = RedisConst.buildKey(RedisConst.KYE_ORDER, conf.getKqdm());
- String orderId = (String)redisUtil.get(key);
- if(StringUtils.isEmpty(orderId)){
+ OrderData orderData = (OrderData)redisUtil.get(key);
+ if(StringUtils.isEmpty(orderData.getOrderid())){
log.error("鎸囦护id澶辨晥=" + jsonData);
ResponseDto responseDto = new ResponseDto(99, "鎸囦护id澶辨晥");
apiLog.setStatus(99);
@@ -124,18 +125,21 @@
//鑾峰彇韬唤ID锛屽嵆琛屾斂鍖哄垝鐮�
reqData.setUid(conf.getUserName());
//鎸囦护id
- reqData.setOrderid(orderId);
+ reqData.setOrderid(orderData.getOrderid());
+
//韬唤绛惧悕锛屼娇鐢ㄨ嚜鏈塕SA绉侀挜杩涜鍔犲瘑(鍦板尯琛屾斂鍖哄垝浠g爜_褰撳ぉ鏃ユ湡)
reqData.setAccess_token(RSAUtils.encryptData(reqData.getUid() + "_" + DateFormatUtils.format(new Date(), "yyyy-MM-dd"), conf.getPassword()));
//鏁版嵁鎬绘潯鏁�
List<Object> list = (List<Object>) data;
reqData.setDatalength(list.size());
+
//浣跨敤鍖虹骇骞冲彴鍏挜瀵规暟鎹繘琛孯SA鍔犲瘑
reqData.setData(RSAUtils.encrypt(jsonData, conf.getPublicKey()));
//鎽樿锛屾暟鎹富浣撶殑MD5鍊�
reqData.setDigst(MyMD5Util.encrypt(jsonData));
- SH2023RespDto responseDto = SH2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData, conf);
+ SH2023RespDto responseDto = SH2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, JSON.toJSONString(reqData), conf);
+
apiLog.setStatus(responseDto.getCode() == 200 ? 0 : responseDto.getCode());
apiLog.setResult(responseDto.getResult());
apiLogRep.save(apiLog);
@@ -196,8 +200,8 @@
//鑾峰彇鎸囦护id
String key = RedisConst.buildKey(RedisConst.KYE_ORDER, conf.getKqdm());
- String orderId = (String)redisUtil.get(key);
- if(StringUtils.isEmpty(orderId)){
+ OrderData orderData = (OrderData)redisUtil.get(key);
+ if(StringUtils.isEmpty(orderData.getOrderid())){
ResponseDto responseDto = new ResponseDto(99, "鎸囦护id澶辨晥");
apiLog.setStatus(99);
apiLog.setResult("鎸囦护id澶辨晥");
@@ -211,7 +215,7 @@
//鑾峰彇韬唤ID锛屽嵆琛屾斂鍖哄垝鐮�
reqData.setUid(conf.getUserName());
//鎸囦护id
- reqData.setOrderid(orderId);
+ reqData.setOrderid(orderData.getOrderid());
//韬唤绛惧悕锛屼娇鐢ㄨ嚜鏈塕SA绉侀挜杩涜鍔犲瘑(鍦板尯琛屾斂鍖哄垝浠g爜_褰撳ぉ鏃ユ湡)
reqData.setAccess_token(RSAUtils.encryptData(reqData.getUid() + "_" + DateFormatUtils.format(new Date(), "yyyy-MM-dd"), conf.getPassword()));
//鏁版嵁鎬绘潯鏁�
@@ -222,7 +226,7 @@
//鎽樿锛屾暟鎹富浣撶殑MD5鍊�
reqData.setDigst(MyMD5Util.encrypt(jsonData));
- SH2023RespDto responseDto = SH2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData, conf);
+ SH2023RespDto responseDto = SH2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, JSON.toJSONString(reqData), conf);
apiLog.setStatus(responseDto.getCode() == 200 ? 0 : responseDto.getCode());
apiLog.setResult(responseDto.getResult());
apiLogRep.save(apiLog);
diff --git a/src/main/java/com/fzzy/push/sh2023/SH2023HttpClientUtil.java b/src/main/java/com/fzzy/push/sh2023/SH2023HttpClientUtil.java
index 0d47166..9f5ddf9 100644
--- a/src/main/java/com/fzzy/push/sh2023/SH2023HttpClientUtil.java
+++ b/src/main/java/com/fzzy/push/sh2023/SH2023HttpClientUtil.java
@@ -26,8 +26,8 @@
* @throws Exception
*/
@SuppressWarnings("resource")
- public static SH2023RespDto postPushData(String url, SH2023ReqDto reqData , ApiConfs apiConfs) throws Exception {
- log.info("---------鎺ュ彛璇锋眰鍦板潃锛�" +url+ "----------鍙傛暟锛�" + reqData.toString() +"---------");
+ public static SH2023RespDto postPushData(String url, String reqData , ApiConfs apiConfs) throws Exception {
+ log.info("---------鎺ュ彛璇锋眰鍦板潃锛�" +url+ "----------鍙傛暟锛�" + reqData +"---------");
BufferedReader in = null;
URL urls = new URL(url);
HttpURLConnection connection = null;
@@ -48,7 +48,8 @@
connection.setRequestMethod("POST");
outputStream = connection.getOutputStream();
- outputStream.write(reqData.toString().getBytes("UTF-8"));
+
+ outputStream.write(reqData.getBytes("UTF-8"));
try {
connection.connect();
if (connection.getResponseCode() == 200) {
diff --git a/src/main/java/com/fzzy/push/sh2023/SH2023OrderApiServiceImpl.java b/src/main/java/com/fzzy/push/sh2023/SH2023OrderApiServiceImpl.java
index 30b5a8e..8ada21d 100644
--- a/src/main/java/com/fzzy/push/sh2023/SH2023OrderApiServiceImpl.java
+++ b/src/main/java/com/fzzy/push/sh2023/SH2023OrderApiServiceImpl.java
@@ -13,6 +13,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
import java.text.ParseException;
/**
@@ -22,6 +24,7 @@
* @date 2023/08/17
*/
@Slf4j
+@Service
public class SH2023OrderApiServiceImpl implements OrderApiService {
@Autowired
@@ -59,7 +62,7 @@
//鎸囦护瀛樺叆缂撳瓨锛屾椂鏁�24灏忔椂
String key = RedisConst.buildKey(RedisConst.KYE_ORDER, conf.getKqdm());
- redisUtil.set(key, orderid, 59 * 60 * 24);
+ redisUtil.set(key, req, 59 * 60 * 24);
ApiParam param = new ApiParam();
param.setPushProtocol(conf.getPushProtocol());
@@ -71,7 +74,7 @@
log.info("鎺ユ敹鐨勬寚浠や腑鎺ュ彛鍐呭涓�={}", req.getContent());
String[] interfaces = ids.split(";");
for (String inteId : interfaces) {
- log.info("杩樻槸鎵ц鎺ュ彛={}鐨勬暟鎹笂鎶�", inteId);
+ log.info("鎵ц鎺ュ彛={}鐨勬暟鎹笂鎶�", inteId);
param.setInteId(inteId);
getDataToPush(param, inteId);
}
@@ -85,102 +88,151 @@
switch (inteId) {
case "1101":
sh2023PushService11.pushData1101(apiRemoteService, param);
+ break;
case "1102":
sh2023PushService11.pushData1102(apiRemoteService, param);
+ break;
case "1103":
sh2023PushService11.pushData1103(apiRemoteService, param);
+ break;
case "1104":
sh2023PushService11.pushData1104(apiRemoteService, param);
+ break;
case "1105":
sh2023PushService11.pushData1105(apiRemoteService, param);
+ break;
case "1106":
sh2023PushService11.pushData1106(apiRemoteService, param);
+ break;
case "1107":
sh2023PushService11.pushData1107(apiRemoteService, param);
+ break;
case "1108":
sh2023PushService11.pushData1108(apiRemoteService, param);
+ break;
case "1109":
sh2023PushService11.pushData1109(apiRemoteService, param);
+ break;
case "1110":
sh2023PushService11.pushData1110(apiRemoteService, param);
+ break;
case "1111":
sh2023PushService11.pushData1111(apiRemoteService, param);
+ break;
case "1112":
sh2023PushService11.pushData1112(apiRemoteService, param);
+ break;
case "1113":
sh2023PushService11.pushData1113(apiRemoteService, param);
+ break;
case "1114":
sh2023PushService11.pushData1114(apiRemoteService, param);
+ break;
case "1201":
sh2023PushService12.pushData1201(apiRemoteService, param);
+ break;
case "1202":
sh2023PushService12.pushData1202(apiRemoteService, param);
+ break;
case "1203":
sh2023PushService12.pushData1203(apiRemoteService, param);
+ break;
case "1204":
sh2023PushService12.pushData1204(apiRemoteService, param);
+ break;
case "1205":
sh2023PushService12.pushData1205(apiRemoteService, param);
+ break;
case "1206":
sh2023PushService12.pushData1206(apiRemoteService, param);
+ break;
case "1207":
sh2023PushService12.pushData1207(apiRemoteService, param);
+ break;
case "1208":
sh2023PushService12.pushData1209(apiRemoteService, param);
+ break;
case "1209":
sh2023PushService12.pushData1209(apiRemoteService, param);
+ break;
case "1210":
sh2023PushService12.pushData1210(apiRemoteService, param);
+ break;
case "1211":
sh2023PushService12.pushData1211(apiRemoteService, param);
+ break;
case "1212":
sh2023PushService12.pushData1212(apiRemoteService, param);
+ break;
case "2101":
sh2023PushService12.pushData2101(apiRemoteService, param);
+ break;
case "2102":
sh2023PushService12.pushData2102(apiRemoteService, param);
+ break;
case "2104":
sh2023PushService12.pushData2104(apiRemoteService, param);
+ break;
case "1301":
sh2023PushService13.pushData1301(apiRemoteService, param);
+ break;
case "1302":
sh2023PushService13.pushData1302(apiRemoteService, param);
+ break;
case "1303":
sh2023PushService13.pushData1303(apiRemoteService, param);
+ break;
case "1304":
sh2023PushService13.pushData1304(apiRemoteService, param);
+ break;
case "1305":
sh2023PushService13.pushData1305(apiRemoteService, param);
+ break;
case "1306":
sh2023PushService13.pushData1306(apiRemoteService, param);
+ break;
case "1307":
sh2023PushService13.pushData1307(apiRemoteService, param);
+ break;
case "1308":
sh2023PushService13.pushData1308(apiRemoteService, param);
+ break;
case "1309":
sh2023PushService13.pushData1309(apiRemoteService, param);
+ break;
case "1310":
sh2023PushService13.pushData1310(apiRemoteService, param);
+ break;
case "1311":
sh2023PushService13.pushData1311(apiRemoteService, param);
+ break;
case "2103":
sh2023PushService13.pushData2103(apiRemoteService, param);
+ break;
case "1401":
sh2023PushService14.pushData1401(apiRemoteService, param);
+ break;
case "1402":
sh2023PushService14.pushData1402(apiRemoteService, param);
+ break;
case "1403":
sh2023PushService14.pushData1403(apiRemoteService, param);
+ break;
case "1404":
sh2023PushService14.pushData1404(apiRemoteService, param);
+ break;
case "1405":
sh2023PushService14.pushData1405(apiRemoteService, param);
+ break;
case "2203":
sh2023PushService14.pushData2203(apiRemoteService, param);
+ break;
case "2204":
sh2023PushService14.pushData2204(apiRemoteService, param);
+ break;
default:
log.error("-----涓婃捣甯傚钩鍙帮細鏈尮閰嶅埌鎺ュ彛缂栫爜锛屼笉鎺ㄩ��-----");
+ break;
}
}
diff --git a/src/main/java/com/fzzy/push/sh2023/dto/SH2023Api1101.java b/src/main/java/com/fzzy/push/sh2023/dto/SH2023Api1101.java
index 5d797f3..42fcb22 100644
--- a/src/main/java/com/fzzy/push/sh2023/dto/SH2023Api1101.java
+++ b/src/main/java/com/fzzy/push/sh2023/dto/SH2023Api1101.java
@@ -3,22 +3,15 @@
import com.alibaba.fastjson.annotation.JSONField;
import com.bstek.dorado.annotation.PropertyDef;
import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fzzy.api.entity.ApiParent;
import lombok.Data;
-import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
* 鎺ュ彛琛�-鍗曚綅
*
- * @author chen
+ * @author czt
* @date 2022-09-02 14:18
*/
@Data
@@ -96,6 +89,9 @@
@PropertyDef(label = "浠撴埧鏁�")
private Integer cfs;
+ @PropertyDef(label = "寤掗棿鏁�")
+ private Integer ajs;
+
@PropertyDef(label = "娌圭綈鏁�")
private Integer ygs;
@@ -105,26 +101,8 @@
@PropertyDef(label = "绾害")
private double wd;
- @PropertyDef(label = "鍗曚綅鐘舵��")
- private String dwzt;
-
- @PropertyDef(label = "澶囨绫诲瀷", description = "0:鍒濇澶囨 1:鍙樻洿澶囨 2:閲嶆柊澶囨")
- private String balx;
-
- @PropertyDef(label = "浠撳偍涓氬姟绫诲瀷")
- private String ccywlx;
-
- @PropertyDef(label = "浠撳偍鍝佺")
- private String ccpz;
-
- @PropertyDef(label = "澶囨鐘舵��")
- private String bazt;
-
@PropertyDef(label = "鎿嶄綔鏍囧織")
private String czbz;
-
- @PropertyDef(label = "寤掗棿鏁�")
- private Integer ajs;
@PropertyDef(label = "鏍囪浣�")
private String bjw;
@@ -133,17 +111,4 @@
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date zhgxsj;
- @JSONField(serialize = false)
- @PropertyDef(label = "涓氬姟id")
- private String bizId;
-
- @JSONField(serialize = false)
- @PropertyDef(label = "鍚屾鏃堕棿", description = "浠庣伯搴撶郴缁熷悓姝ュ埌鎺ュ彛绠$悊涓績鐨勬椂闂�")
- private Date syncTime;
-
- @JSONField(serialize = false)
- @PropertyDef(label = "搴撳尯浠g爜")
- private String kqdm;
-
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/fzzy/push/whhpjl/WhjlOrderApiServiceImpl.java b/src/main/java/com/fzzy/push/whhpjl/WhjlOrderApiServiceImpl.java
index 2373922..286e6b4 100644
--- a/src/main/java/com/fzzy/push/whhpjl/WhjlOrderApiServiceImpl.java
+++ b/src/main/java/com/fzzy/push/whhpjl/WhjlOrderApiServiceImpl.java
@@ -4,6 +4,7 @@
import com.fzzy.api.entity.ApiConfs;
import com.fzzy.order.OrderApiService;
import com.fzzy.order.data.OrderData;
+import org.springframework.stereotype.Service;
/**
* 涓婃姹夊啗绮钩鍙�2023鐗�-鎸囦护瑙f瀽
@@ -11,6 +12,7 @@
* @author czt
* @date 2023/08/17
*/
+@Service
public class WhjlOrderApiServiceImpl implements OrderApiService {
@Override
--
Gitblit v1.9.3