From cc21e2969accb008823510a3e507247dc6f1f10b Mon Sep 17 00:00:00 2001 From: wushaocheng <15876365887@163.com> Date: Mon, 14 Aug 2023 12:24:32 +0800 Subject: [PATCH] =?UTF-8?q?[Modify]=E7=99=BB=E5=BD=95=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/libs/arm64-v8a/libpeko-common.so | Bin 7192 -> 0 bytes app/libs/armeabi-v7a/libpeko-common.so | Bin 4976 -> 0 bytes .../erban/ui/login/LoginPhoneActivity.kt | 6 +- .../erban/ui/login/helper/LogoutHelper.java | 7 +- .../main/res/xml/network_security_config.xml | 8 +- .../net/rxnet/exception/ExceptionHandle.kt | 3 +- .../utils/codec/DESUtils.java | 111 ++++++++++++++++-- 7 files changed, 116 insertions(+), 19 deletions(-) delete mode 100644 app/libs/arm64-v8a/libpeko-common.so delete mode 100644 app/libs/armeabi-v7a/libpeko-common.so diff --git a/app/libs/arm64-v8a/libpeko-common.so b/app/libs/arm64-v8a/libpeko-common.so deleted file mode 100644 index cefd4d2f000676733eb9be88b0cfd234d2f3ea8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7192 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, override fun onError(e: Throwable) { dialogManager.dismissDialog() - toast(e.message) - LogUtils.e(e.message) + if(e.message != null) { + toast(e.message) + } } }) diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java b/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java index e1dff2f17..a1e6f92eb 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java +++ b/app/src/main/java/com/yizhuan/erban/ui/login/helper/LogoutHelper.java @@ -7,6 +7,7 @@ import android.text.style.ForegroundColorSpan; import androidx.core.content.ContextCompat; +import com.appsflyer.internal.components.network.http.exceptions.HttpException; import com.yizhuan.erban.R; import com.yizhuan.erban.base.BaseActivity; import com.yizhuan.xchat_android_core.auth.AuthModel; @@ -17,6 +18,8 @@ import com.yizhuan.xchat_android_library.net.rxnet.exception.ExceptionHandle; import com.yizhuan.xchat_android_library.utils.ResUtil; import java.io.IOException; +import java.net.SocketException; +import java.net.SocketTimeoutException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -38,7 +41,9 @@ public class LogoutHelper { eventLabel.append(msg); } } - if (e instanceof BanAccountException) { + if (e instanceof SocketTimeoutException || e instanceof SocketException || e instanceof HttpException) { + activity.toast(ResUtil.getString(R.string.login_helper_logouthelper_013)); + } else if (e instanceof BanAccountException) { BanAccountException exception = (BanAccountException) e; String text = ResUtil.getString(R.string.login_helper_logouthelper_02) + exception.getMessage() + ResUtil.getString(R.string.login_helper_logouthelper_03); int start = text.length(); diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index 1f232eb4d..a1c7218fe 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -2,11 +2,9 @@ - - - - - + + + diff --git a/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/exception/ExceptionHandle.kt b/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/exception/ExceptionHandle.kt index 563c77ee8..2f9dd7bc6 100644 --- a/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/exception/ExceptionHandle.kt +++ b/library/src/main/java/com/yizhuan/xchat_android_library/net/rxnet/exception/ExceptionHandle.kt @@ -5,6 +5,7 @@ import com.google.gson.JsonParseException import org.json.JSONException import retrofit2.HttpException import java.net.ConnectException +import java.net.SocketException import java.net.SocketTimeoutException import java.net.UnknownHostException import java.text.ParseException @@ -21,7 +22,7 @@ class ExceptionHandle { fun handleException(e: Throwable): String { e.printStackTrace() when (e) { - is SocketTimeoutException, is ConnectException, is HttpException -> { //均视为网络错误 + is SocketException, is SocketTimeoutException, is HttpException -> { //均视为网络错误 Log.e(TAG, "網絡連接異常: " + e.message) errorMsg = "網絡異常,請檢查您的網絡再試~" } diff --git a/library/src/main/java/com/yizhuan/xchat_android_library/utils/codec/DESUtils.java b/library/src/main/java/com/yizhuan/xchat_android_library/utils/codec/DESUtils.java index 5b419d71a..a7979cd75 100644 --- a/library/src/main/java/com/yizhuan/xchat_android_library/utils/codec/DESUtils.java +++ b/library/src/main/java/com/yizhuan/xchat_android_library/utils/codec/DESUtils.java @@ -1,19 +1,83 @@ package com.yizhuan.xchat_android_library.utils.codec; +import android.util.Base64; + import com.yizhuan.xchat_android_library.utils.StringUtils; +import java.nio.charset.Charset; +import java.security.Key; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.DESKeySpec; + +//import sun.misc.BASE64Decoder; +//import sun.misc.BASE64Encoder; + public class DESUtils { - static { - System.loadLibrary("peko-common"); +// static BASE64Decoder decoder = new BASE64Decoder(); +// static BASE64Encoder encoder = new BASE64Encoder(); + + static String DES = "DES"; + static String ENCODE = "UTF-8";//保持平台兼容统一使用utf-8 + + //des 加密 + private static byte[] encryptByteDES(byte[] byteD, String strKey) throws Exception { + return doEncrypt(byteD, getKey(strKey), DES); } - public static String DESAndBase64Encrypt(String dataToEncrypt) { - return replaceBlank(stringFromJNI(replaceBlank(dataToEncrypt))); + //des 解密 + private static byte[] decryptByteDES(byte[] byteD, String strKey) throws Exception { + return doDecrypt(byteD, getKey(strKey), DES); + } + + public static SecretKey getKey(String strKey) throws Exception { + DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes()); + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); + SecretKey sk = keyFactory.generateSecret(desKeySpec); + return sk; + } + + + public static void main(String[] args) throws Exception { + + String text = "admin"; +// String pwd = "NJD783iSDK0d9fjd98KKDf9O"; + String pwd = "1ea53d260ecf11e7b56e00163e046a26"; + //客户端加密 +// String data = DESAndBase64Encrypt(text, pwd); +// System.out.println(ResUtil.getString(R.string.utils_codec_desutils_01) + URLEncoder.encode(data, "UTF-8")); + + //服务端解密 +// String textDecrypt = DESAndBase64Decrypt(data, pwd); +// System.out.println(ResUtil.getString(R.string.utils_codec_desutils_02) + text); +// System.out.println(ResUtil.getString(R.string.utils_codec_desutils_03) + textDecrypt); + + +// byte[] bytes = text.getBytes(); +// byte[] encode = Base64.encode(bytes,Base64.DEFAULT); + + } + + //客户端加密 + public static String DESAndBase64Encrypt(String dataToEncrypt, String secretKey) throws Exception { + byte[] encryptData = encryptByteDES(dataToEncrypt.getBytes(ENCODE), secretKey);//这里加密前不要处理加密数据的空格换行等事情 + byte[] encode = Base64.encode(encryptData, Base64.DEFAULT); + String dataBase64 = StringUtils.toEncodedString(encode, Charset.defaultCharset()); + return replaceBlank(dataBase64); + } + + //客户端加密 + public static String DESAndBase64Encrypt(String dataToEncypt) throws Exception { + byte[] encryptData = encryptByteDES(replaceBlank(dataToEncypt).getBytes(ENCODE), "1ea53d260ecf11e7b56e00163e046a26"); + byte[] encode = Base64.encode(encryptData, Base64.DEFAULT); + String dataBase64 = StringUtils.toEncodedString(encode, Charset.defaultCharset()); + return replaceBlank(dataBase64); } public static String DESAndBase64(String psw) { @@ -36,13 +100,42 @@ public class DESUtils { return dest; } - public static String DESAndBase64Decrypt(String dataBase64) { + //服务端解密 + public static String DESAndBase64Decrypt(String dataBase64) throws Exception { if (StringUtils.isEmpty(dataBase64)) return null; - return stringFromJNI2(dataBase64); + byte[] encryptedData = Base64.decode(dataBase64, Base64.DEFAULT); + byte[] decryptedData = decryptByteDES(encryptedData, "1ea53d260ecf11e7b56e00163e046a26"); + String textDecrypt = new String(decryptedData, ENCODE); + return textDecrypt; } - public static native String stringFromJNI(String str); - - public static native String stringFromJNI2(String str); + /** + * 执行加密操作 + * + * @param data 待操作数据 + * @param key Key + * @param type 算法 RSA or DES + * @return + * @throws Exception + */ + private static byte[] doEncrypt(byte[] data, Key key, String type) throws Exception { + Cipher cipher = Cipher.getInstance(type); + cipher.init(Cipher.ENCRYPT_MODE, key); + return cipher.doFinal(data); + } + /** + * 执行解密操作 + * + * @param data 待操作数据 + * @param key Key + * @param type 算法 RSA or DES + * @return + * @throws Exception + */ + private static byte[] doDecrypt(byte[] data, Key key, String type) throws Exception { + Cipher cipher = Cipher.getInstance(type); + cipher.init(Cipher.DECRYPT_MODE, key); + return cipher.doFinal(data); + } } \ No newline at end of file