hxb
2022-02-16 845bb16392e6b47ec31147d0e7c6ddc39537f2e7
解密有问题后不往上层发
8个文件已修改
85 ■■■■■ 已修改文件
HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-common/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-socket/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -71,7 +71,10 @@
        super.onDestroy();
        removeAllTopicsListener();
    }
void init(){
    HDLLinkConfig.getInstance().setLocalSecret("7d04c4e3c2b7d600");
    HDLLinkConfig.getInstance().setGatewayId("1473119283609321473");
}
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -80,7 +83,7 @@
        tv = findViewById(R.id.state_tv);
        rv = findViewById(R.id.rv);
        rv.setLayoutManager(new LinearLayoutManager(this));
         init();
        checkIfCertified();
        initDeviceInfo();
        registerAllTopicsListener();
@@ -276,15 +279,15 @@
        tv.setText("开始入网认证...");
        //认证提交参数准备
//        //测试服务
//        String spkStr = "ir.module";//产品spk
//        String macStr = "AA000000000000BB";//设备唯一MAC地址
//        String secret = "87ae414b7a853f65";//通过spk和mac提交云端认证后分配的secret
        //测试服务
        String spkStr = "ir.module";//产品spk
        String macStr = "AA000000000000BB";//设备唯一MAC地址
        String secret = "87ae414b7a853f65";//通过spk和mac提交云端认证后分配的secret
        //正式服务器
        String spkStr = "screen.mirror";//产品spk
        String macStr = "AA000000000000AC";//设备唯一MAC地址
        String secret = "ee62124c151b737c";//通过spk和mac提交云端认证后分配的secret
//        //正式服务器
//        String spkStr = "screen.mirror";//产品spk
//        String macStr = "AA000000000000AC";//设备唯一MAC地址
//        String secret = "ee62124c151b737c";//通过spk和mac提交云端认证后分配的secret
        String mac_key = stringToMD5(stringToMD5(macStr + secret));
        String versionString = "HDL_V1.0.1";//
HDLSDK/hdl-common/build.gradle
@@ -9,7 +9,7 @@
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.0.3"
        versionName "1.0.5"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
HDLSDK/hdl-connect/build.gradle
@@ -9,7 +9,7 @@
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.0.3"
        versionName "1.0.5"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
@@ -3,6 +3,7 @@
import android.text.TextUtils;
import com.hdl.sdk.common.config.TopicConstant;
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.common.utils.SPUtils;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
@@ -114,12 +115,16 @@
    }
    public String getLocalSecret() {
        LogUtils.i("HDLLinkConfig","密钥是:"+localSecret);
        return localSecret;
    }
    public String getGatewayId() {
        return gatewayId;
    }
    public void setGatewayId(String gatewayId) {
        this.gatewayId=gatewayId;
    }
    public String getIpAddress() {
        return ipAddress;
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -1,8 +1,12 @@
package com.hdl.sdk.connect.protocol;
import android.os.Build;
import android.util.Log;
import androidx.annotation.RequiresApi;
import com.google.gson.internal.bind.DateTypeAdapter;
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.connect.config.HDLLinkConfig;
import com.hdl.sdk.common.event.EventDispatcher;
@@ -13,6 +17,7 @@
import com.hdl.sdk.socket.codec.ByteToMessageDecoder;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
/**
@@ -111,6 +116,7 @@
        }
    }
    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    protected synchronized LinkResponse decoder(Object msg) throws Exception {
        if (msg instanceof byte[]) {
@@ -154,18 +160,22 @@
                if (HDLLinkConfig.getInstance().ifNeedEncrypt(response.getTopic())) {
                    //需要解密
                    byte[] bodyBytes = AesUtil.aesDecrypt(body, HDLLinkConfig.getInstance().getLocalSecret());
//                        byte[] bodyBytes = AESUtils.decryptAES(body,AuthenticateConfig.getInstance().getLocalSecret());
                    if (bodyBytes != null) {
                        response.setData(new String(bodyBytes, "utf-8"));
//                            LogUtils.i("TAG", "解密 主题:"+response.getTopic()+ " body: "+response.getData());
                        body = bodyBytes;
                    } else {
                        //解密失败,返回原数据
                        response.setData(new String(body, "utf-8"));
                        try {
                            LogUtils.e("解密失败,数据内容是:\r\n" + Base64.getEncoder().encodeToString(body));
                        } catch (Exception e) {
                        }
                    }
                } else {
                    response.setData(new String(body, "utf-8"));
                }
                String bodyString = new String(body, "utf-8");
                //非正常数据,返回
                if (!(bodyString.startsWith("{") || bodyString.startsWith("["))) {
                    continue;
                }
                response.setData(bodyString);
                LogUtils.i( "LinkMessageDecoder->decoder:" + response.getTopic() + "\r\n" + response.getData());
                //解析完成,topic发送一次
                EventDispatcher.getInstance().post(response.getTopic(), response);
HDLSDK/hdl-socket/build.gradle
@@ -9,7 +9,7 @@
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 2
        versionName "1.0.3"
        versionName "1.0.5"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java
@@ -64,7 +64,7 @@
            connected=true;
            client.onConnectStatus(ConnectStatus.CONNECTED);
        }catch(Exception e) {
            LogUtils.e(e.getMessage());
            LogUtils.e("连接异常"+e.getMessage());
        }
    }
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
@@ -3,6 +3,7 @@
import com.hdl.sdk.common.utils.ByteUtils;
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.common.utils.ThreadToolUtils;
import com.hdl.sdk.socket.SocketBoot;
import com.hdl.sdk.socket.SocketOptions;
@@ -15,6 +16,7 @@
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.List;
@@ -67,12 +69,14 @@
    @Override
    public void connect() throws Exception {
        mSocket = getSocket();
        SocketOptions options = getOptions();
        mSocket.connect(new InetSocketAddress(ip, port));
//        SocketOptions options = getOptions();
        mSocket.connect(new InetSocketAddress(ip, port), 3 * 1000);
        mSocket.setTcpNoDelay(true);
        mSocket.setReuseAddress(true);
        mSocket.setKeepAlive(true);
        mSocket.setSoTimeout(20 * 1000);
        tcpClientList.add(this);
    }
@@ -103,12 +107,17 @@
    public void onHandleResponse() throws Exception {
        final InputStream stream = getInputStream();
        if (stream != null && getOptions() != null) {
            int len=0;
            while ( (len=getInputStream().read(readBuffer)) != -1) {
            while ( true) {
                int len=getInputStream().read(readBuffer);
                if(len<=0){
                    throw  new Exception("接收异常,接收数据长度len="+len);
                }
                IHandleMessage handleMessage = getOptions().getHandleMessage();
                if (handleMessage != null) {
                    byte []bytes = new byte[len];
                    System.arraycopy(readBuffer,0,bytes,0,len);
                    LogUtils.i("收到TCP数据",new String(bytes));
                    //完整的数据才回调
                    handleMessage.read(bytes);
                }
@@ -120,14 +129,10 @@
    public void sendMsg(byte[] msg) throws Exception {
        final OutputStream outputStream = getOutStream();
        if (outputStream != null && getOptions() != null) {
            try {
                IHandleMessage handleMessage = getOptions().getHandleMessage();
                handleMessage.write(handleMessage.write(msg));
                getOutStream().write(msg);
            } finally {
                outputStream.write(msg);
                outputStream.flush();
            }
        }
    }