Я новичок в 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;
}
Я был бы очень признателен за некоторые советы. Пожалуйста помоги.
Спасибо