From 8b0b219fbb57141ef16dd18765af2ad4b7d748dd Mon Sep 17 00:00:00 2001
From: snow <282032181@qq.com>
Date: Sun, 24 Nov 2024 13:35:58 +0800
Subject: [PATCH] aaaaa
---
pom.xml | 6 +++++-
.../com/iot/modbus_rtcp/netty/ModbusDecoder.java | 15 +++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index bfcd6f7..5d0259c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,7 +82,11 @@
spring-boot-starter-amqp
-
+
+ org.bouncycastle
+ bcprov-jdk15on
+ 1.60
+
com.alibaba
druid-spring-boot-3-starter
diff --git a/src/main/java/com/iot/modbus_rtcp/netty/ModbusDecoder.java b/src/main/java/com/iot/modbus_rtcp/netty/ModbusDecoder.java
index 81513a8..cdd3fdf 100644
--- a/src/main/java/com/iot/modbus_rtcp/netty/ModbusDecoder.java
+++ b/src/main/java/com/iot/modbus_rtcp/netty/ModbusDecoder.java
@@ -3,6 +3,7 @@ package com.iot.modbus_rtcp.netty;
import cn.hutool.core.util.ArrayUtil;
import com.iot.modbus_rtcp.config.EquipmentIPProperties;
import com.iot.modbus_rtcp.dto.ModbusCommandDto;
+import com.iot.modbus_rtcp.utils.CRCUtil;
import com.iot.modbus_rtcp.utils.HexUtil;
import com.iot.modbus_rtcp.utils.SpringUtil;
import io.netty.buffer.ByteBuf;
@@ -10,6 +11,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
@@ -88,8 +90,21 @@ public class ModbusDecoder extends ByteToMessageDecoder {
if (bytesCache.length < (message.getLength() / 2)) {
DataCache.put(identity, bytesCache);
} else if (bytesCache.length == (message.getLength() / 2)) {
+// if (!verifyCRC(bytesCache)) {
+// return;
+// }
+
out.add(HexUtil.bytesToHexString(bytesCache));
}
}
+ private boolean verifyCRC(byte[] bytes) {
+ byte[] crc = ByteUtils.subArray(bytes, bytes.length - 2, bytes.length);
+ byte[] data = ByteUtils.subArray(bytes, 0, bytes.length - 2);
+
+ String generate = CRCUtil.getCRC(data);
+ String original = HexUtil.bytesToHexString(crc);
+
+ return original.equalsIgnoreCase(generate);
+ }
}