简述

不论什么网络设备而言,都会有自己独特的一个MAC地址,不然在设备量较大的情况下非常可能造成通信的混乱。蓝牙是无线通信中使用非常广泛的技术。当然其蓝牙地址也是相当的重要的了。

蓝牙地址简述

种类划分

- public地址

- random地址

蓝牙地址长度,48bit,即6个byte。

Public地址

该地址是固定的,厂商设定:



public addr和resolvable random addr和unresolvable random addr

Random地址

Random地址事实上又分为两种:

- Static地址

- Private地址

Static地址



这样的地址是在蓝牙设备上电初始化成功后,就不会再变化,而到关闭电源再重新启动,才会使用一个新的值。

Private地址



这样的是non resolvable的private地址,其值不能和public地址一样。对于这样的地址,假设都没有办法解析出,不知道须要这类地址有什么作用?以后知道了再来补充吧。只是认为可能是对Public地址的一个补充。



这样的是resolvable的private地址。prand部分是随机生成的24bit数值。hash部分使用例如以下的方式生成:

hash = ah(IRK, prand)

ah是SMP部分的随机地址生成函数,IRK是密钥(Identity Resolving Key),先随机生成prand部分,然后用这个算法生成hash,然后将hash和prand部分填入上图中相应bit区域,就形成了resolvable private address(RPA)了。

由于上面这样的地址是resolvable的,当然得有相应的地址解析的方法了,通过解密所获得对方的蓝牙地址,才干够进行某些通信,看来是BLE的新特性所提供安全性的一些手段了。

在拿到对方的resolvable private address(RPA)后。本地设备从RPA中取出prand部分,然后会依据上面hash的生成方式生成一个叫localhash的:

localHash = ah(IRK, prand)

然后将这个localHash和从RPA中取出的hash部分进行比較,假设同样,那么对方设备就被识别了。

感觉这里的识别作用就是确定应当用哪个IRK和对方设备交互。对于这样的random地址的方式,后面还得再看看。应当是比較新的特性。

[BLE--Link Layer]设备蓝牙地址的更多相关文章

  1. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  2. 蓝牙BLE LINK LAYER剖析(二) -- PDU

    DATA FORMAT The Link Layer has only one packet format used for both advertising channel packets and ...

  3. 蓝牙BLE LINK LAYER剖析(一) -- status and channel

    一.LINK LAYER STATES 二.PHYSICAL CHANNEL

  4. 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)

    转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 :  -- 官方文档 : https://develope ...

  5. c#程序如何从海康ipserver查询获取DVR设备ip地址

    海康威视提供的ipserver可以记录DVR设备的IP地址,并提供一个7071的端口给客户端查询用,我们在c#程序中可以用海康SDK包中的NET_DVR_GetDVRIPByResolveSvr函数来 ...

  6. 获取设备mac地址和md5加密

    SGMSettingConfig.h #import <Foundation/Foundation.h> @interface SGMSettingConfig : NSObject{ N ...

  7. Android获取蓝牙地址

    最近做一个项目,发现Android6.0以上的版本获取的蓝牙地址始终为02:00:00:00, Google一下发现Android早就封掉了相关接口,于是想到反射的方式去获取Mac地址,在此记录一下 ...

  8. Android6.0以上版本获取本机蓝牙地址

    Android6.0以上版本使用BluetoothAdapter.getDefaultAdapter().getAddress()是获取不到正确的蓝牙地址的,返回的值都是02:00:00:00:00: ...

  9. Android BLE设备蓝牙通信框架BluetoothKit

    BluetoothKit是一款功能强大的Android蓝牙通信框架,支持低功耗蓝牙设备的连接通信.蓝牙广播扫描及Beacon解析. 关于该项目的详细文档请关注:https://github.com/d ...

随机推荐

  1. 4种方法让SpringMVC接收多个对象

    问题背景: 我要在一个表单里同一时候一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该怎样处理? 第1种方法:表单提交,以字段数组接收: 第2 ...

  2. POJ 3905 Perfect Election(2-sat)

    POJ 3905 Perfect Election id=3905" target="_blank" style="">题目链接 思路:非常裸的 ...

  3. 风暴英雄 http 302重定向 正在等待游戏模式下载完成

    抓包 在抓到的数据包里面,看到一个http get请求,右键选中,然后follow stream wireshark自动进行数据包过滤tcp.stream eq 1340,并且可以看到完整的数据通讯 ...

  4. poj--3207--Ikki's Story IV - Panda's Trick(2-sat)

    Ikki's Story IV - Panda's Trick Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %I64d ...

  5. 从git源码安装zabbix-agent

    从网上随便找了几个image,都是从svn下载的代码,根本跑不了,于是自己重新做了个,从git上拿的源码,只是build出来的image有点大,有时间再优化了 Dockerfile FROM cent ...

  6. Ubuntu16.04下沙盒数据导入到 Neo4j 数据库(图文详解)

    不多说,直接上干货! 参考博客 http://blog.csdn.net/u012318074/article/details/72793914   (表示感谢)  前期博客 Neo4j沙盒实验申请过 ...

  7. 压力测试工具 Tinyget

    Tinyget 压力测试工具使用方法为:命令行切换到工具所在路径下,然后输入压力命令.如:tinyget -srv:localhost -uri:/FeaturedProdu1cts.aspx -th ...

  8. Js基础知识(作用域、特殊函数---自调、回调、作为值的函数)

    15.作用域 概念: 规定变量或函数的可被访问的范围和生命周期 分类: 全局作用域 -就是指当前整个页面环境: 局部作用域(函数作用域) -就是指某个函数内部环境 l 变量的作用域 全局变量 - 定义 ...

  9. Golden Gate 检查点

    检查点是记录读写位置信息,在恢复时候要用到,保证事务的完整性. 两种存储方式: 存放在dirchk下 存放在指定的checkpoint table Replicat: nodbcheckpoint: ...

  10. 利用Arcade表达式显示多行标签

    要素图层依然是全球气象站点分布数据,属性表如下: 展示效果如下,显示的四行数据分别是属性表中的WIND_NAME,TEMP,WIND(运算之后的),R_HUMIDITY 本次尝试一次性写全所有的信息: ...