zigbee(CC2530+ZSTACK)的AES加密

  1.创建密钥
  Z-STACK协议栈在配置文件f8wConfig.cfg定义了密钥:

/* Default security key. */
-DDEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0D}

  所以用户只需要修改-DDEFAULT_KEY的值就可以定义自己使用的密钥。
  2. 将ZGlobals.c 中的uint8 zgPreConfigKeys = FLASE;修改为TRUE;
  如果这个值为真,那么默认的密钥必须在每个节点程序的配置文件中配置。如果这个值为假,那么默认的密钥只需配置到协调器设备当中,并且通过协调器节点发送给其他的节点。

// If true, preConfigKey should be configured on all devices on the network
// If false, it is configured only on the coordinator and sent to other
// devices upon joining.
uint8 zgPreConfigKeys = TRUE;  

  3. 将f8wConfig.cfg 文件中设置为-DSECURE=1使能AES加密

/* Set to 0 for no security, otherwise non-0 */
-DSECURE=1

  最后,到这里整个加密过程结束,值得注意的是,如果使用了加密算法后,网络中所有的设备都需要开启这个算法,而且各个设备中的KEY必须相同。否则后果是很严重的,这会导致你的网络不能正常通讯,因为没有加密的数据或者相同KEY加密,这些数据网络是不认识的,根本就不会传到网络层。
加密算法开启以后,如果你需要修改代码,就必须改变你的KEY,或者是擦除一次你的flash,否则会出现不可逾期的错误,而且没有规律。通常的做法是擦除flash一次,这样可以保证和整个网络的KEY相同。

  在进行加密之后,应用层的负载变为了加密后的格式。
  抓包分析:加密前
这里写图片描述
  同样的数据加密后
这里写图片描述

你可能感兴趣的:(ZigBee)