Настройка ключа шифрования c между приложениями Arduino и React Native - PullRequest
0 голосов
/ 31 марта 2020

Я новичок в Arduino и работаю над проектом по передаче ключей шифрования c между Arduino (ESP8266) и приложением React Native. На стороне ESP8266 я использую arduino crypto library , а для React Native я использую реагировать-нативный-крипто- js. Шифрование, кажется, не работает правильно и возвращает мусор. Итак, в качестве первого шага я пытался передать ключ от Arduino в мобильное приложение (используя Bluetooth H C -05). Следующий код был использован на стороне arduino:

void getConnected() {
  // wait till someone try to connect to the user
  if (btSerial.available() > 0) {
    String message =  btSerial.readString();
    if(message == "Hello") {
      Serial.println("user trying to connect");
      byte key[32];
      device.getKey(key);
      Serial.println((char*)key);
      btSerial.write((char*)key);
    }
  }
}

Ключ генерируется с использованием RNG.rand(key, sizeof(key)), и я также напечатал сгенерированные байты отдельно, и это что-то вроде:

137 224 186 115 0 0 0 0 172 228 254 63 131 53 32 64 208 218 255 63 13 0 0 0 172 228 254 63 48 70 32 64

Как вы видите выше, так как в байтах есть 0, код в приложении React Native получают только первые 4 байта, а оставшиеся игнорируются, поскольку он считает 5-й байт концом строки. Код, используемый в приложении, выглядит следующим образом:

  async setup(deviceId) {
    console.log('connecting');
    await BluetoothSerial.connect(deviceId);
    console.log('connected');
    await BluetoothSerial.write('Hello');
    setTimeout(async () => {
      let key = await BluetoothSerial.readFromDevice();
      console.log(key);
    }, 3000);
    // const input = await BluetoothSerial.readFromDevice();
    return true;
  }

Я был бы очень признателен за некоторые советы. Пожалуйста помоги.

Спасибо

...