From 42b658b2d789b1d19c79dbb040f5f0d0edc79da1 Mon Sep 17 00:00:00 2001 From: wushaocheng <15876365887@163.com> Date: Fri, 17 Mar 2023 00:59:50 +0800 Subject: [PATCH] =?UTF-8?q?[Modify]=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=92=8C=E5=B0=86=E5=8A=A0=E5=AF=86=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=BF=AE=E6=94=B9=E4=B8=BAso=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/libs/arm64-v8a/libpeko-common.so | Bin 0 -> 7192 bytes app/libs/armeabi-v7a/libpeko-common.so | Bin 0 -> 4976 bytes app/src/main/AndroidManifest.xml | 7 +- .../main/res/xml/network_security_config.xml | 9 +- .../utils/APIEncryptUtil.java | 20 ++-- .../withdraw/WithdrawModel.java | 2 +- .../utils/codec/DESUtils.java | 111 ++---------------- 7 files changed, 27 insertions(+), 122 deletions(-) create mode 100644 app/libs/arm64-v8a/libpeko-common.so create 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 new file mode 100644 index 0000000000000000000000000000000000000000..cefd4d2f000676733eb9be88b0cfd234d2f3ea8d GIT binary patch literal 7192 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 - - - - + android:process=":core" + tools:node="remove"> - - - - + + + + + diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/utils/APIEncryptUtil.java b/core/src/main/java/com/yizhuan/xchat_android_core/utils/APIEncryptUtil.java index 18c60ad83..af7e33f7a 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/utils/APIEncryptUtil.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/utils/APIEncryptUtil.java @@ -24,16 +24,16 @@ public class APIEncryptUtil { private static final String DES_ENCRYPT_KEY_SMS_SIGN = XChatConstants.DES_ENCRYPT_KEY_SMS_SIGN; - /** - * 参数加密 - * @param params - * @return - * @throws Exception - */ - public static String encryptParams(Map params) throws Exception{ - String json = new Gson().toJson(params); - return DESUtils.DESAndBase64Encrypt(json,DES_ENCRYPT_KEY_SMS_PARAMS); - } +// /** +// * 参数加密 +// * @param params +// * @return +// * @throws Exception +// */ +// public static String encryptParams(Map params) throws Exception{ +// String json = new Gson().toJson(params); +// return DESUtils.DESAndBase64Encrypt(json,DES_ENCRYPT_KEY_SMS_PARAMS); +// } /** * 生成签名 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/withdraw/WithdrawModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/withdraw/WithdrawModel.java index d4efb0da0..42e1890bc 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/withdraw/WithdrawModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/withdraw/WithdrawModel.java @@ -118,7 +118,7 @@ public class WithdrawModel extends BaseModel implements IWithdrawModel { String paramsStr = null; String signStr = null; try { - paramsStr = APIEncryptUtil.encryptParams(paramsEncrypt); +// paramsStr = APIEncryptUtil.encryptParams(paramsEncrypt); signStr = APIEncryptUtil.paramsToSign(paramsEncrypt); } catch (Exception e) { e.printStackTrace(); 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 a7979cd75..5b419d71a 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,83 +1,19 @@ 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 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); + static { + System.loadLibrary("peko-common"); } - //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 DESAndBase64Encrypt(String dataToEncrypt) { + return replaceBlank(stringFromJNI(replaceBlank(dataToEncrypt))); } public static String DESAndBase64(String psw) { @@ -100,42 +36,13 @@ public class DESUtils { return dest; } - //服务端解密 - public static String DESAndBase64Decrypt(String dataBase64) throws Exception { + public static String DESAndBase64Decrypt(String dataBase64) { if (StringUtils.isEmpty(dataBase64)) return null; - byte[] encryptedData = Base64.decode(dataBase64, Base64.DEFAULT); - byte[] decryptedData = decryptByteDES(encryptedData, "1ea53d260ecf11e7b56e00163e046a26"); - String textDecrypt = new String(decryptedData, ENCODE); - return textDecrypt; + return stringFromJNI2(dataBase64); } - /** - * 执行加密操作 - * - * @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); - } + 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[] 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