2016-09-06 2 views
1

Я пытаюсь создать UUID, который включает меры безопасности, которые предотвращают атаки повтора. Я планирую прикреплять временную метку к UUID и шифровать маяк. Шифрование создает 16-байтовый объект, но передатчик Beacon требует, чтобы UUID был строкой согласованной длины. Есть ли способ передать объект Byte вместо строки. Кроме того, мне нужно, чтобы зашифрованный маяк менялся со временем. Должен ли я сделать: beaconTransmitter.startAdvertising (beacon); таймаут (1 секунда); beaconTransmitter.stopAdvertising (beacon); и рекурсивно назвать мой метод beacontransmit?Шифрование Altbeacons

ответ

0

Если ваше шифрование действительно составляет 16-байтовый объект, вы должны иметь возможность его конвертировать в UUID, который также имеет длину 16 байт. Он должен быть таким же простым, как:

Identifier uuid = Identifier.fromBytes(byteArrayOfLength16, 0, 15, false); 

Однако алгоритмы шифрования обычно делают гораздо более длинный байтовый массив в качестве выходного. Вы можете удалить все из 16 байтов из зашифрованного вывода, чтобы сделать хэш (это в основном то, что делает Eddystone-EID), но это невозможно будет расшифровать. Получающему устройству придется выполнить один и тот же расчет шифрования для заданной временной метки, чтобы увидеть, вычисляет ли он одно и то же значение. Если это так, он знает, что нашел совпадение.

Да, подход к отправке рекламы на основе одной временной метки, ожидающей задержки и начала рекламы на основе новой отметки времени - это, безусловно, путь.

Смежные вопросы