Шифрование LoRaWAN AES в C#

Протокол LoRaWAN имеет особый способ шифрования данных ( стр. 20, глава 4.3.3.1), и я пытаюсь сделать это в C#.

Во-первых, последовательность A с блоками размером 16 байтов каждый A1..An создано. Затем они зашифрованы, чтобы получить последовательность S блоков Si:

Si = aes128_encrypt(K, Ai) for i = 1..n
S = S1 | S2 | .. | Sn

И, наконец, полезная нагрузка зашифрована:

(pld | pad16) xor S
truncation of the first len(payload) bytes

Пока мне удалось сгенерировать блоки, но я новичок в криптографии и не знаю, как поступить, кто-нибудь может помочь?

Вот сценарий шифрования в Python.

Вот сценарий шифрования в JS.

Вот сценарий шифрования в C++.

И это код C#, который у меня есть:

public string encrypt(string payload, string dev_eui, string dev_addr, int counter_up)
{
  try
  {
    byte[] devaddr = StringToByteArray(dev_addr);
    byte[] aBlock = {
      0x01,
      0x00,
      0x00,
      0x00,
      0x00,
      0,
      devaddr[3],
      devaddr[2],
      devaddr[1],
      devaddr[0],
      (byte)(counter_up & 0xff),
      (byte)((counter_up >> 8) & 0xff),
      (byte)((counter_up >> 16) & 0xff),
      (byte)((counter_up >> 24) & 0xff),
      0x00,
      0x00 };

     \\...

0 ответов

Другие вопросы по тегам