【BLE】CC2541之数据加密与解密
2015-11-28 17:02
232 查看
本篇博文最后修改时间: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中)
注:实际上加密与解密的函数应该分别用在两台机子上,这里只是在同一台机子上测试。
七、注意事项
暂无
八、实验结果
1、按五向按键的UP键,协议栈会将加密后的数据存进缓冲区EncryptedData。
2、按五向按键的DOWN键,协议栈会将破解后数据存进缓冲区DeccryptedData。
破解后的数据与data缓冲区的“0x01~0x10”数据一致,破解成功。
因此,实验成功。
一、简介
本文以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”数据一致,破解成功。
因此,实验成功。
相关文章推荐
- image
- java反射机制(1)- 知识点总结Java Reflection API操作
- Spring4.2.0设计思想---总体架构
- linux日常管理-curl工具
- 1-4-09:判断能否被3,5,7整除
- Android获取URI的绝对路径的类
- Android 使用模板生成Word文档,支持手机直接查看word
- SDOI2013 淘金
- 汇编语言基础知识摘要(《汇编语言》王爽)第 2 / 17 章
- ubuntu 14.04 下编译QT程序出错误:can't find -lGL error
- cf(413A,B,C)
- DojoGetting Started
- 《我们到底应该怎么吃》读书笔记-- 待续
- 运动的球(1)
- 1-4-08:判断一个数能否同时被3和5整除
- sql clr项目注意
- VUE(现代库) VS jquery(传统库)
- nyoj 138 找球号(二)
- HTML中<form>表单method的get方式和post方式
- HDFS Rolling Upgrade