fix:修改收到消息时先验证合法性再解码内容

This commit is contained in:
SL 2025-01-10 19:03:13 +08:00
parent 25caa7a067
commit 8c3cf3e820
4 changed files with 20 additions and 11 deletions

View File

@ -3,6 +3,7 @@ package com.xinbida.wukongdemo
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.widget.Button
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatImageView
@ -41,6 +42,12 @@ class ConversationActivity : AppCompatActivity() {
} }
private fun initListener() { private fun initListener() {
findViewById<Button>(R.id.disConn).setOnClickListener{
WKIM.getInstance().connectionManager.disconnect(false)
}
findViewById<Button>(R.id.conn).setOnClickListener{
WKIM.getInstance().connectionManager.connection()
}
// 监听连接状态 // 监听连接状态
WKIM.getInstance().connectionManager.addOnConnectionStatusListener( WKIM.getInstance().connectionManager.addOnConnectionStatusListener(
"conv" "conv"

View File

@ -35,4 +35,15 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" /> android:layout_weight="1" />
<Button
android:id="@+id/disConn"
android:text="断开"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/conn"
android:text="连接"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout> </LinearLayout>

View File

@ -220,11 +220,6 @@ class WKProto {
receivedMsg.topicID = wkRead.readString(); receivedMsg.topicID = wkRead.readString();
} }
String content = wkRead.readPayload(); String content = wkRead.readPayload();
<<<<<<< HEAD
=======
WKLoggerUtils.getInstance().e(TAG, "消息payload:" + content);
receivedMsg.payload = CryptoUtils.getInstance().aesDecrypt(CryptoUtils.getInstance().base64Decode(content));
>>>>>>> 9978523a9a818731b66c2409ff4c0cba70fab46f
String msgKey = receivedMsg.messageID String msgKey = receivedMsg.messageID
+ receivedMsg.messageSeq + receivedMsg.messageSeq
+ receivedMsg.clientMsgNo + receivedMsg.clientMsgNo
@ -239,13 +234,13 @@ class WKProto {
} }
String base64Result = CryptoUtils.getInstance().base64Encode(result); String base64Result = CryptoUtils.getInstance().base64Encode(result);
String localMsgKey = CryptoUtils.getInstance().digestMD5(base64Result); String localMsgKey = CryptoUtils.getInstance().digestMD5(base64Result);
WKLoggerUtils.getInstance().e("Receive message:");
WKLoggerUtils.getInstance().e(receivedMsg.toString());
if (!localMsgKey.equals(receivedMsg.msgKey)) { if (!localMsgKey.equals(receivedMsg.msgKey)) {
WKLoggerUtils.getInstance().e("Illegal messages,localMsgKey:" + localMsgKey + ",msgKey:" + msgKey); WKLoggerUtils.getInstance().e("Illegal messages,localMsgKey:" + localMsgKey + ",msgKey:" + msgKey);
return null; return null;
} }
receivedMsg.payload = CryptoUtils.getInstance().aesDecrypt(CryptoUtils.getInstance().base64Decode(content)); receivedMsg.payload = CryptoUtils.getInstance().aesDecrypt(CryptoUtils.getInstance().base64Decode(content));
WKLoggerUtils.getInstance().e("Receive message:");
WKLoggerUtils.getInstance().e(receivedMsg.toString());
} catch (IOException e) { } catch (IOException e) {
WKLoggerUtils.getInstance().e(TAG, "deReceivedMsg Decoding received message error"); WKLoggerUtils.getInstance().e(TAG, "deReceivedMsg Decoding received message error");
} }

View File

@ -102,12 +102,8 @@ public class CryptoUtils {
} catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException |
InvalidAlgorithmParameterException | IllegalBlockSizeException | InvalidAlgorithmParameterException | IllegalBlockSizeException |
BadPaddingException e) { BadPaddingException e) {
<<<<<<< HEAD
WKLoggerUtils.getInstance().e(TAG,"aesEncrypt encrypt error"); WKLoggerUtils.getInstance().e(TAG,"aesEncrypt encrypt error");
return null; return null;
=======
WKLoggerUtils.getInstance().e(TAG, "aesEncrypt encrypt error");
>>>>>>> 9978523a9a818731b66c2409ff4c0cba70fab46f
} }
if (encrypted == null) { if (encrypted == null) {
WKLoggerUtils.getInstance().e(TAG, "aesEncrypt The encrypted data is empty"); WKLoggerUtils.getInstance().e(TAG, "aesEncrypt The encrypted data is empty");