Проблема кода Arduino с расшифровкой 3des Encypt - PullRequest
0 голосов
/ 04 мая 2019

Здравствуйте, у меня проблема с моим кодом в 3des. Enc / dec, он работает только с 8 байтами для меня

Я получил результат только в этом

проблема в том, что результат дают только для 8 байтов в первую очередьне для всех 48 байтов

B1 09 DA E1 B7 1B 63 8E 17 02 07 83 1A 0D 1A DF 36 1F E4 6D 41 28 35 25 02 00 00 14 00 00 43 77 3B 38 98 37 15 20 F70C 18 56 03 00 00 14 00 00

ниже я прилагаю мой пример кода

#include <DES.h>

DES des;

void setup() {
  Serial.begin(9600);
  Serial.println("Hello!");
}

void loop() {
  tdesTest();
  delay(2000);
}

void tdesTest()
{
  byte out[48];
  byte in[48] = { 0xda, 0x9f, 0xab, 0xbe, 0x85, 0x26, 0x6f, 0x53, 0x9c, 0x8c, 0xbb, 0x03, 0x7f, 0x54, 0x61, 0x27, 0x3d, 0xfa, 0xb9, 0xf5, 0xfe, 0xb0, 0x9a, 0x3b, 0x3b, 0xc6, 0xf8, 0xb5, 0xe0, 0x84, 0x4d, 0xe1, 0x58, 0xe7, 0x88, 0x83, 0xae, 0x0d, 0xae, 0xdf, 0x36, 0x0d, 0xd0, 0x68, 0x45, 0x2b, 0x37, 0x24 };

  byte key[] = { 
                  0x15, 0x2b, 0xd8, 0x96, 0x57, 0xe0, 0x3f, 0xdc, 
                  0x73, 0x75, 0xa0, 0x0e, 0x1f, 0xb1, 0xa3, 0x8b, 
                  0xab, 0x09, 0x7c, 0x10, 0x3b, 0x80, 0x38, 0x46,
                };

  Serial.println();
  Serial.println("====== Triple-DES test ======");

  //encrypt
  Serial.print("Encrypt...");
  unsigned long time = micros();
  des.tripleEncrypt(out, in, key);
  time = micros() - time;
  Serial.print("done. (");
  Serial.print(time);
  Serial.println(" micros)");
  printArray(out);

  //decrypt
  for (int i = 0; i < 48; i++)
  {
    in[i] = out[i];
  }
  Serial.print("Decrypt...");
  time = micros();
  des.tripleDecrypt(out, in, key);
  time = micros() - time;
  Serial.print("done. (");
  Serial.print(time);
  Serial.println(" micros)");
  printArray(out);
}

void printArray(byte output[])
{
  for (int i = 0; i < 48; i++)
  {

   if (output[i] < 0x10)
    {
      Serial.print("0");
    }

    Serial.print(output[i], HEX);
    Serial.print(" ");
  }
  Serial.println();
}
...