蓝牙简单配对(Simple Pairing)协议及代码流程简述

本文简述了蓝牙简单配对的四种方式,重点介绍了最常见的Bluetooth In Band方法,包括搜索设备、建立连接、生成Link key和鉴权四个步骤。此外,还提及了OOB Discovery在配对过程中的应用,如通过NFC加速配对。最后,概述了Mediatek Android系统的配对代码流程。
摘要由CSDN通过智能技术生成
[DESCRIPTION]
 
在BT2.1及之后版本,蓝牙协议有在传统的密码配对(PIN Code Pairing)之外,新增一种简单配对(Simple Pairing)的方式。这种新的配对方式操作更为简单、安全性也更强。目前市面上大部分蓝牙设备均已支持简单配对方式。
从用户角度上看,传统的PIN Code Pairing 需要双方蓝牙设备 输入配对密码(如果双方都有输入设备的话),而简单配对则只需要 双方确认屏幕上的6位随机数相同即可(如果双方都有屏幕)。
下面对简单配对的协议及代码流程进行简单描述。
 
 
[SOLUTION]
 

1、  在蓝牙规范中有用下图描述简单配对过程

a)         上方第一行描述了三种配对过程,分别为

BLE蓝牙绑定和密码配对流程代码详解: 一、蓝牙绑定流程 在 BLE 蓝牙设备连接时,需要进行绑定操作,以确保设备间通信的安全性。蓝牙绑定流程如下: 1. 从主设备中发出绑定请求。 2. 从设备接收到绑定请求并回复同意绑定。 3. 主设备生成随机数并加密发送到从设备。 4. 从设备使用预设的加密算法对接收到的随机数进行解密,并将加密后的结果发送给主设备。 5. 主设备对接收到的加密结果进行校验,若校验通过,表示绑定成功。 二、密码配对流程 在 BLE 蓝牙设备连接时,需要进行密码配对操作,以确保设备间通信的安全性。密码配对流程如下: 1. 从主设备中发出密码配对请求。 2. 从设备接收到密码配对请求并回复同意配对。 3. 主设备生成随机数并加密发送到从设备。 4. 从设备使用预设的加密算法对接收到的随机数进行解密,并将加密后的结果发送给主设备。 5. 主设备对接收到的加密结果进行校验,若校验通过,表示配对成功。 三、代码实现 下面是使用 Android BLE API 实现蓝牙绑定和密码配对的示例代码: ```java // 绑定流程 private void startBonding(BluetoothDevice device) { device.createBond(); } // 密码配对流程 private void startPairing(BluetoothDevice device) { device.setPairingConfirmation(true); } @Override public void onBondStateChanged(BluetoothDevice device, int state) { switch (state) { case BluetoothDevice.BOND_BONDING: Log.d(TAG, "正在绑定设备:" + device.getName()); break; case BluetoothDevice.BOND_BONDED: Log.d(TAG, "已绑定设备:" + device.getName()); break; case BluetoothDevice.BOND_NONE: Log.d(TAG, "未绑定设备:" + device.getName()); break; } } @Override public void onPairingRequest(BluetoothDevice device, int mode) { switch (mode) { case BluetoothDevice.PAIRING_VARIANT_PIN: Log.d(TAG, "需要输入 PIN 码"); // 输入 PIN 码 device.setPin(mPin.getBytes()); break; case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION: Log.d(TAG, "需要确认 Passkey"); // 确认 Passkey device.setPairingConfirmation(true); break; case BluetoothDevice.PAIRING_VARIANT_CONSENT: Log.d(TAG, "需要确认配对"); // 确认配对 startPairing(device); break; case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY: case BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN: Log.d(TAG, "显示 Passkey 或 PIN 码"); break; default: Log.e(TAG, "未知的配对模式:" + mode); break; } } ``` 以上代码仅供参考,实际实现可能会因为硬件设备和蓝牙协议版本的不同而有所差异。在实际开发中,还需要注意蓝牙设备的连接状态和信号强度等信息,并根据需要进行处理。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值