package com.example.demo.mqtt;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.util.ByteArrayBuffer;
import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import java.nio.ByteBuffer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
public class SubMessageListener implements IMqttMessageListener {
private String id;
private MqttClient mqttClient;
private String topic;
public SubMessageListener() {
}
public SubMessageListener(String id, MqttClient mqttClient, String topic) {
this.id = id;
this.mqttClient = mqttClient;
this.topic = topic;
}
private byte[] buffer = new byte[421320];
private int ab=0;
@Override
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
System.out.println("接收消息主题 : " + topic);
if (topic.startsWith("v2/fw/response")) {
for (byte aa : mqttMessage.getPayload()) {
buffer[ab] = aa;
ab++;
System.out.println("ab: "+ab);
}
System.out.println("数量 : " + i + " ,hex=" + encodeHexString(mqttMessage.getPayload()));
//System.arraycopy(mqttMessage.getPayload(),0,buffer,bytesize+1,mqttMessage.getPayload().length);
sb.append(new String(mqttMessage.getPayload()));
bytesize += mqttMessage.getPayload().length;
System.out.println("接收消息内容size: " + mqttMessage.getPayload().length);
if (mqttMessage.getPayload().length < 1320) {
String hashValue = DigestUtils.sha256Hex(buffer);
System.out.println("aa:" + hashValue);
hashValue = hash(buffer);
System.out.println("aa:" + hashValue);
System.out.println("bytesize:" + bytesize);
if ("17ae291d08837890026d562e5b666f88d6389fe71d1183d6ed7eeee7505cc209".equals(hashValue)) {
System.out.println("校验和完整!!");
} else {
System.out.println("校验失败!!");
}
}
} else {
System.out.println("接收消息aaa " + ": " + new String(mqttMessage.getPayload()));
}
System.out.println("topic : " + topic);
System.out.println("时间 : " + new Date().getTime());
public String hash(byte[] passBytes) {
try {
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
byte[] passHash = sha256.digest(passBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < passHash.length; i++) {
sb.append(Integer.toString((passHash[i] & 0xff) + 0x100, 16).substring(1));
}
String generatedPassword = sb.toString();
return generatedPassword;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
O dispositivo de atualização ota do thingsboard3.4 executa uma soma de verificação de cálculo total após receber o fluxo de arquivo do pacote de instalação
Guess you like
Origin blog.csdn.net/qq_40351360/article/details/127678820
Recommended
Ranking