我正在使用SPP蓝牙模块在我的Android手机应用和模块之间发送数据。我今天偶然发现了一件有趣的事情。
令我惊讶的是,在上面的第5点,即使没有在我的手机上更新PIN,一切仍然有效。我计划通过在向模块发送更改PIN的命令后使用反射调用removeBond()来解决这个问题,因为这对我的特定用例来说已经足够了。但是,如果PIN更改可能由其他东西触发,那么我的手机将无效。
我的问题是这是否正常。蓝牙规格很长,所以我希望有人知道这一点。我想在更改蓝牙设备的密码后,所有已与之配对的设备都必须再次通过配对过程,这次使用新的密钥。但上述步骤表明情况并非如此。这是我的蓝牙模块(Bluegiga WT12)上的错误还是这种预期的行为?有没有人遇到过这个?
谢谢。
干杯!
答案 0 :(得分:0)
因此,蓝牙规格比我想象的更友好。我在这一段中找到了答案:
蓝牙PIN用于验证两个蓝牙设备(尚未验证) 之前交换过的链接密钥)并创建一个可信任的关系 它们之间。 PIN用于配对程序(参见第11.2节) 第241页)生成用于进一步验证的初始链接密钥。
所以passkey不像路由器中的密码。它只是两个设备在连接时需要知道的序列,以便一个人验证另一个。一旦他们确信他们可以相互信任,他们就会交换链接密钥,并将其用于未来的通信。然后,密钥/密码不相关。
我希望我理解这一点。
非常抱歉发布太快。
干杯!