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