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); + } }