From a3dc9d5522d8a5f2ebc71c8f4b7cd7695a6812d3 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Thu, 04 Dec 2025 15:10:11 +0000
Subject: [PATCH] 网络请求加密相关修复
---
libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RetrofitUtils.java | 2 +-
libmvi/src/main/java/com/runt/open/mvi/retrofit/converter/DecryptGsonResponseBodyConverter.java | 4 ++--
libmvi/src/main/java/com/runt/open/mvi/retrofit/Interceptor/OpenInterceptor.java | 4 ++--
libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RSAUtils.java | 19 +++++++++++--------
4 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/libmvi/src/main/java/com/runt/open/mvi/retrofit/Interceptor/OpenInterceptor.java b/libmvi/src/main/java/com/runt/open/mvi/retrofit/Interceptor/OpenInterceptor.java
index 29eab9b..6d7751e 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/retrofit/Interceptor/OpenInterceptor.java
+++ b/libmvi/src/main/java/com/runt/open/mvi/retrofit/Interceptor/OpenInterceptor.java
@@ -33,7 +33,7 @@
public class OpenInterceptor implements Interceptor {
protected final Charset UTF8 = Charset.forName("UTF-8");
- protected final String ENCRYPT = "body";
+ protected final String ENCRYPT = "paramsString";
@Override
public Response intercept(Chain chain) throws IOException {
@@ -108,7 +108,7 @@
protected String encryptJson(String json){
try {
- return RSAUtils.encrypt(json,RSAUtils.getPublicKey(RSAUtils.PUBLIC_KEY));
+ return RSAUtils.encrypt(json);
}catch (Exception e){
e.printStackTrace();
return e.getMessage();
diff --git a/libmvi/src/main/java/com/runt/open/mvi/retrofit/converter/DecryptGsonResponseBodyConverter.java b/libmvi/src/main/java/com/runt/open/mvi/retrofit/converter/DecryptGsonResponseBodyConverter.java
index d5c71b7..a51d81d 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/retrofit/converter/DecryptGsonResponseBodyConverter.java
+++ b/libmvi/src/main/java/com/runt/open/mvi/retrofit/converter/DecryptGsonResponseBodyConverter.java
@@ -51,10 +51,10 @@
response = decryptJsonStr(val);//解密
} catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
e.printStackTrace();
- response = "{\"code\":412,\"message\":\""+"解密数据出错"+e.getMessage()+"\"}";
+ response = "{\"code\":412,\"msg\":\""+"解密数据出错"+e.getMessage()+"\"}";
} catch (JSONException e) {
e.printStackTrace();
- response = "{\"code\":414,\"message\":\"非标准json\"}";
+ response = "{\"code\":414,\"msg\":\"非标准json\"}";
}catch (Exception e){
e.printStackTrace();
JsonReader jsonReader = gson.newJsonReader(value.charStream());
diff --git a/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RSAUtils.java b/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RSAUtils.java
index 9ca8b42..84b4953 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RSAUtils.java
+++ b/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RSAUtils.java
@@ -79,14 +79,17 @@
/**
* RSA加密
*
- * @param data 待加密数据
- * @param key 密钥
+ * @param bodyJson 待加密数据
* @return
*/
- public static String encrypt(String data, Key key) throws Exception {
+ public static String encrypt(String bodyJson) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key);
- int inputLen = data.getBytes().length;
+ cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(PUBLIC_KEY));
+ JSONObject object = new JSONObject();
+ object.put("body",bodyJson);
+ object.put("sign",sign(bodyJson,RSAUtils.getPrivateKey(PRIVATE_KEY)));
+ String json = object.toString();
+ int inputLen = json.getBytes().length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offset = 0;
byte[] cache;
@@ -94,9 +97,9 @@
// 对数据分段加密
while (inputLen - offset > 0) {
if (inputLen - offset > MAX_ENCRYPT_BLOCK) {
- cache = cipher.doFinal(data.getBytes(), offset, MAX_ENCRYPT_BLOCK);
+ cache = cipher.doFinal(json.getBytes(), offset, MAX_ENCRYPT_BLOCK);
} else {
- cache = cipher.doFinal(data.getBytes(), offset, inputLen - offset);
+ cache = cipher.doFinal(json.getBytes(), offset, inputLen - offset);
}
out.write(cache, 0, cache.length);
i++;
@@ -147,7 +150,7 @@
return decryptVerify(jsonBody.getString(key));
}
public static String decryptVerify(String body) throws Exception{
- String decrypted = RSAUtils.decrypt(body, RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY));
+ String decrypted = RSAUtils.decrypt(body, getPrivateKey(RSAUtils.PRIVATE_KEY));
JSONObject json = new JSONObject(decrypted);
//服务端公钥验证加签是否正确
String decryptBody = json.getString("body");
diff --git a/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RetrofitUtils.java b/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RetrofitUtils.java
index ed6097d..5815cbb 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RetrofitUtils.java
+++ b/libmvi/src/main/java/com/runt/open/mvi/retrofit/utils/RetrofitUtils.java
@@ -209,7 +209,7 @@
//设置OKHttpClient
.client(client)
//设置baseUrl,注意,baseUrl必须后缀"/"
- .baseUrl(BuildConfig.HOST_IP_ADDR+"api/v4/")
+ .baseUrl(BuildConfig.HOST_IP_ADDR+"api/v5/")
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
--
Gitblit v1.9.1