Я использую собственное приложение реагирования для связи с моим miband 3, и частью процесса аутентификации является шифрование массива байтов с использованием алгоритма AES / ECB / NoPadding. В настоящее время я использую этот код в качестве ссылки
Поскольку я новичок в iot и шифровании, я полагаю, что последний шаг его аутентификации неверен, потому что ипосле записи в miband 3 зашифрованного байтового массива я не получаю аутентификацию должным образом.
В настоящее время последний шаг выглядит следующим образом:
const base_key = [0x01,0x23,0x45,0x67,0x89,0x01,0x22,0x23,0x34,0x45,0x56,0x67,0x78,0x89,0x90,0x02]
console.warn('Getting random number...')
const random_number = bytesToString(notification.filter((byte, index) => index > 3))
// Encrypting the key
const key = bytesToString(base_key)
const cipher = CryptoJS.AES.encrypt(random_number,key).toString()
// Step 5) Sending encrypted random number
console.warn('sending encrypted random number...')
const request_send_encrypted_key = [0x03,0x00, ...stringToBytes(cipher)]
await BleManager.writeWithoutResponse(miband3, service_uuid, characteristic_uuid, request_send_encrypted_key)
Уведомление отфильтровано, поскольку первые 3 байта используются, чтобы сообщить, какое уведомление происходит, поэтому они мне не нужны.
Я должен отправить следующее в miband 3 для правильной аутентификации:
const byteArrayToSend = [0x03,0x00, ...encryptedByteArray]
encryptedByteArray - мое случайное число, возвращенное из уведомления miband (без первых 3в байтах) и должным образом зашифрованы.
Я использую 'crypto-js' и 'response-native-ble-manager' в коде.
Как мнеправильно зашифровать этот bytearray, используя алгоритм AES для его отправки?