import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Collections;
import java.security.NoSuchAlgorithmException;
public String EventType;
public String EventData;
public String EventTime;
public String Signature;
public class CheckSignature {
public static void main(String[] args) {
Event event=new Event();
event.EventType="RoomCreate";
event.EventData="{\"RoomId\":\"room1\",\"Timestamp\":1679383924691}";
event.EventTime="2023-03-21T15:32:04+08:00";
event.Version="2020-12-01";
event.Signature="1c7200723842eff514b65fc3f065597432bbb4249e10d33db79b3853d05f3691";
String secretKey="1234";
boolean ret=Check(event,secretKey);
System.out.println(ret);
private static boolean Check(Event event,String secretKey){
List<String> data = new ArrayList<>();
data.add(event.EventType);
data.add(event.EventData);
data.add(event.EventTime);
data.add(event.EventId);
data.add(event.Version);
final String payloadData=String.join("",data);
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(payloadData.getBytes());
String signature=byteToHexString(digest.digest());
System.out.println(signature);
if(event.Signature.equals(signature)){
} catch (NoSuchAlgorithmException e){
private static String byteToHexString(byte[] bytes){
return String.format("%064x", new BigInteger(1,bytes));