51822动态密码

我们使用SDK11 uart例子分析,因为是动态密码,板子上没有显示屏,所以通过串口将动态密码打印出来,然后手机正确输入才能配对成功。

无论是静态密码还是动态密码都可以看做是配对过程中的一种认证方式即 我是我,因为这样可以一定程度上避免他人连上你的设备,因为他们看不到设备显示的配对密码

而你自己可以看到,

配对码的输入是配对过程中生成TK的一种方式即Passkey Entry.另外还有Just Work和Out of Bond两种方式,TK的生成是为了后续在生成STK用来加密链路然后

分发LTK,IRK,CSRK(如果配对信息交换是没指明绑定也就不需要后续的密钥的分发)。

既然有三种方式可选,那么协议是如何决定选择哪种的呢,这个就和配对时交换的配对信息有关了,我们使用的是Passk Entry 即配对码的方式,那么只要将配对信息

中OOB设置为0,MITM设置为1,bond设置为0,然后将自己的I/O能力设置为DisplayOnly就行了

#define SEC_PARAM_BOND   0
#define SEC_PARAM_MITM   1
#define SEC_PARAM_IO_CAPABILITIES  BLE_GAP_IO_CAPS_DISPLAY_ONLY
#define SEC_PARAM_OOB     0
#define SEC_PARAM_MIN_KEY_SIZE   7
#define SEC_PARAM_MAX_KEY_SIZE   16

将该函数添加到BLE_GAP_EVT_SEC_PARAMS_REQUEST时间处理部分中去,这样在主机请求配对时,从机可以将自己的配对信息发送给主机了

信息交换完后,设备底层的协议栈就会自动产生6为随机的密码,并将配对对吗通过事件BLE_GAP_EVT_PASSKEY_DISPLAY上抛给APP,然后就可以砸APP

中将密码通过串口将密码打印出来了。

 

然后添加触发配对代码,这里实现很简单,就是将Rx特征值的CCCD的写设置成需要链路加密和MITM,这样在未配对的情况下手机使能notify时设备

就会回复权限不足,然后手机及发一个配对请求过来从而实现配对很链路加密

烧录程序之后,子啊手机执行使能Notify时就会触发配对,串口打印出来随机密码,手机正确输入便是成功配对。

以上代码都经过本人验证

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值