我正在尝试创建包含防止重放攻击的安全措施的UUID。我计划将时间戳附加到UUID并加密信标。加密创建一个16字节的对象,但信标发送器要求UUID是一个长度一致的字符串。有没有办法可以传输Byte对象而不是字符串。此外,我需要加密的信标随时间变化。我应该这样做: beaconTransmitter.startAdvertising(信标); 超时(1秒); beaconTransmitter.stopAdvertising(信标); 并递归调用我的beacontransmit方法?
答案 0 :(得分:0)
如果您的加密实际上是一个16字节的对象,那么您应该能够将其转换为UUID,也是16字节长。它应该简单:
Identifier uuid = Identifier.fromBytes(byteArrayOfLength16, 0, 15, false);
但是,加密算法通常会将更长的字节数组作为输出。您可以从加密输出中删除除16个字节之外的所有字节以进行哈希(这基本上是Eddystone-EID所做的),但这将无法解密。接收设备必须对给定时间戳执行相同的加密计算,以查看它是否计算相同的值。如果确实如此,则表示已找到匹配。
是的,基于一个时间戳开始广告,等待延迟以及根据新时间戳开始广告的方法肯定是要走的路。