【BLE】CC2541之数据加密与解密

本篇博文最后修改时间:2017年01月06日,11:06。


一、简介

本文以SimpleBLEPeripheral工程为例,介绍如何使用协议栈的数据加密与解密功能。


二、实验平台

协议栈版本:BLE-CC254x-1.4.0

编译软件:IAR 8.20.2

硬件平台:Smart RF开发板(主芯片CC2541)


版权声明

博主:甜甜的大香瓜

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.NET/feilusia

联系方式:897503845@qq.com

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

香瓜单片机之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

四、 实验前提
1、在进行本文步骤前,请先 阅读 以下博文:
暂无

2、在进行本文步骤前,请先 实现以下博文:
1)《CC2541之按键》:http://blog.csdn .NET /feilusia/article/details/47336473


五、基础知识

1、为什么需要加密与解密?

答:蓝牙数据是可以通过空中抓包而被抓取到的,因此需要将通信数据进行加密,这样别人即使知道了加密后的数据,也无法利用该数据。


2、加密与解密的过程是如何?

答:

加密过程:需要加密的数据A与秘钥KEY进行一定的算法,获得加密过的数据B。

解密过程:加密过的数据B与秘钥KEY进行一定的逆运算算法,获得加密前的数据A。


六、实验步骤

1、修改按键处理函数(SimpleBLEPeripheral.c中)

static void simpleBLEPeripheral_HandleKeys( uint8 shift, uint8 keys )
{
  VOID shift;  // Intentionally unreferenced parameter  

  //加密秘钥 16个字节=128bit
  uint8 key[16] = {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

  //需要加密的数据
  uint8 data[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

  //加密后数据存放区
  static uint8 EncryptedData[16] = {0};

  //解密后数据存放区
  static uint8 DeccryptedData[16] = {0};

  
  if ( keys & HAL_KEY_UP )
  {    
    HalLcdWriteString( "Encrypt OK", HAL_LCD_LINE_8 );     
    LL_Encrypt(key, data, EncryptedData);               //加密
  }   
  
  if ( keys & HAL_KEY_DOWN ) 
  { 
    HalLcdWriteString( "Decrypt OK", HAL_LCD_LINE_8 );     
    LL_EXT_Decrypt(key, EncryptedData, DeccryptedData); //解密 
  }   
}
加密与解密的函数都是三个参数,并且三个参数都要求是128bit(16字节)。如果实际中数据不足16字节,可自己补足数据至16字节,如添加几个0xFF。

注:实际上加密与解密的函数应该分别用在两台机子上,这里只是在同一台机子上测试。


七、注意事项

暂无


八、实验结果

1、按五向按键的UP键,协议栈会将加密后的数据存进缓冲区EncryptedData。


2、按五向按键的DOWN键,协议栈会将破解后数据存进缓冲区DeccryptedData。


破解后的数据与data缓冲区的“0x01~0x10”数据一致,破解成功。

因此,实验成功。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值