Hi, I added the compression to the rest of the code, and now it works all together, so I created a sample for you, and a message to solve:
I toke two devices, and booted them with the same master key which then gets erased so, only the hardware shielded devices know afterward. This master key gets created by entering characters into a matrix of 20x4 characters. So up to 80 characters. We only enter 8 characters there, somewhere. Possible variants based on the fact we have 80 different characters and 80 slots for result in:
80 chars x 80 free positions x 80 chars in 79 free positions, 80 chars in 78 and so fort, that's 1,96E+30 possible combinations. Of course, I suggest using 10+ characters but already 8 are damn strong, and should be enough for this reason. Entered at the boot up process of each device, it looks like that:

This key get then encrypted using the device's encryption function, which uses a dummy master key. Afterward it looks like this:

The master key has now 80 characters, and we give the device a unique serial number.
For the examples below which I show you, so you can try hacking it. I of course use another master key, also one defined with 8 different characters somewhere placed in the 80 possible spaces.
Now we go for the "GENERATED ANONYM-ID" function to generate an encryped and always changing string containing secretly our device ID
I setup two devices, with ID 1 and ID 2, normally you would never know or find out just by the ANONYM-ID.
Just for fun I create two different IDs with each device:
Device ID1: "Niy, fJO/" and "-SFk CJ[J"
Device ID2: "8YSY 3V8N" and "MpFY %sKq"
Note: Use Consolas or similar font to see a clear difference between O and 0 and so on. In this board the letters maybe looks somehow similar.
Then we take Device 2, and go to SEND MESSAGE. We enter one of the Ids of Device 1 as target: "Niy, fJO/"
We enter the message: "safe and sound encryption"
The device encodes it to:",yb+&@Snv,AFeN"
We do the same again, sending the same message, and recognize the result is complete different: "CTGuVNAKBfBQoN"
This is because the device has an inbuilt counter for sending messages, it will that way alter the message even if you write the same, and the encryption engine will take care that result in a totally changed message. Altering each letter also influence and change the entire encrypted string.
Now we take Device 1, go to receive message, enter the encrypted string, no matter if first or second message, and the device translate it into the clear message: "safe and sound encryption"
Even the fact that you now knows the message in two variants, in clear AND encrypted form, shouldn't help you to hack the device and get the real master key.
You can try, now I encrypt another message, which I don't tell you, using Device 1, send it to Device 2. So same master key, same device ID. I just don't tell you the clear message.
And I even send it twice, so we get two encrypted strings of the same text message:
String 1: "r(,+!=xac9qfinYsqc)"
String 2: "7%OkKg8K/5IS!ne)ohI"
Good luck hacking it! Can you? I guess nobody can't but let's proof that.
Of course, it's easier but also impossible if you have the code of how the Encryption engine work in detail, as well as the compression function. I don't know if it's a good idea to open post the code right here. We developed the entire thing and of course want to keep the copyrights, but it is also no secret, so it can be seen and proofed.
You can email me to markus@trackless.info or leave me a message here.
Best wishes, and I wish you good luck hacking the message!
Markus