* 本系列博客学习由非官方人员 半颗心脏 <http://blog.csdn.net/xh870189248>
潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。
1、 Esp8266之 搭建开发环境,开始一个“hellow world”串口打印。
<http://blog.csdn.net/xh870189248/article/details/77985541>
2、 Esp8266之 利用GPIO开始使用按钮点亮你的“第一盏灯”。
<http://blog.csdn.net/xh870189248/article/details/78126689>
3、 Esp8266之 利用 "软件定时器 " 定时0.5秒闪烁点亮一盏LED。
<http://blog.csdn.net/xh870189248/article/details/78155357>
4 、Esp8266之 了解PWM,更为深入地用PWM控制一盏LED的亮度变化。
<http://blog.csdn.net/xh870189248/article/details/78202224>
5 、Esp8266之 原生乐鑫SDK高级使用之封装Post与Get请求云端,拿到“天气预报信息”。
<http://blog.csdn.net/xh870189248/article/details/78656563>
6 、Esp8266之 了解 SmartConfig与Airkiss一键配网,给8266配网上云端。无需把wifi名字密码写在固件里。
<http://blog.csdn.net/xh870189248/article/details/78677952>
7 、Esp8266之 了解 softAP热点配网模式原理,仿“机智云”定义自己的热点配网模式协议。
<http://blog.csdn.net/xh870189248/article/details/78703905>
8、 Esp8266之 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。
<http://blog.csdn.net/xh870189248/article/details/78739311>
9、 Esp8266进阶之路第1篇: [小实战上篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。
<http://blog.csdn.net/xh870189248/article/details/78761948>
10、 Esp8266进阶之路第2篇: [小实战下篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。
<http://blog.csdn.net/xh870189248/article/details/78777371>
11、 Esp8266进阶之路第3篇: 8266接入阿里智能,点亮一盏LED灯,期待天猫精灵语音控制的不约而至!
<http://blog.csdn.net/xh870189248/article/details/78807018>
12、 Esp8266进阶之路第4篇: 图文并茂学习阿里云主机搭建8266MQTT服务器,实现移动网络远程控制一盏LED。
<http://blog.csdn.net/xh870189248/article/details/78867173>
13、 Esp8266进阶之路第5篇: 动手做个8266毕设小案例,smartConfig + MQTT协议轻松实现远程控制一盏LED。
<http://blog.csdn.net/xh870189248/article/details/79052347>
14、 Esp8266进阶之路第6篇: esp8266的 FreeRtos系统学习的正确姿势 ------ 环境搭建、烧录。
<http://blog.csdn.net/xh870189248/article/details/79103373>
15、 Esp8266进阶之路第7篇: esp8266的 物联网又一股清流,8266接入阿里云平台非阿里智能的SDS服务,点亮一盏LED灯。
<http://blog.csdn.net/xh870189248/article/details/79197459>
16、 Esp8266进阶之路第8篇: esp8266的 基于Nonos移植红外线H1838,实现红外遥控器配网,远程控制一盏灯。
<http://blog.csdn.net/xh870189248/article/details/79486075>
17、 Esp8266进阶之路第9篇: esp8266自研的快速上电开关五次 (开-关为一次) ,无需按键触发则8266进去一键配网模式。
<https://blog.csdn.net/xh870189248/article/details/80027961>
18、 Esp8266进阶之路第10篇: esp8266 基于NONOS 实现 OTA 远程升级,实现无线“ 热修复 ”升级固件程序。
<https://blog.csdn.net/xh870189248/article/details/80095139>
19、 Esp8266进阶之路第11篇: esp8266驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。
<https://blog.csdn.net/xh870189248/article/details/80284827>
20、 Esp8266进阶之路第12篇: 深入学习esp8266的esp now模式,仿机智云做一个小网关,实现无需网络下轻松彼此连接通讯交互数据。
<https://blog.csdn.net/xh870189248/article/details/80631739>
21、 Esp8266进阶之路第13篇: 浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。
<https://blog.csdn.net/xh870189248/article/details/80859347>
22、 Esp8266进阶之路第14篇: esp8266的工程如何添加第三方静态库文件以及如何自定义文件夹,聊聊那些makeFile的事。。
<https://blog.csdn.net/xh870189248/article/details/80909216>
23、 Esp8266进阶之路第15篇: 再来一波 esp8266 基于 freeRtos系统连接自己私有的服务器实现OTA远程升级,接触下
lwip的基本知识。。 <https://blog.csdn.net/xh870189248/article/details/80924538>
24、 Esp8266进阶之路第16篇: 渗透学习回顾下esp8266的外置spi芯片25q系列,熟悉8266代码块在其的分布,得心应手放置图片或其他资料。
<https://blog.csdn.net/xh870189248/article/details/81017735>
25、 Esp8266进阶之路第17篇: 深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS
系统的串口驱动文件。 <https://blog.csdn.net/xh870189248/article/details/81146532>
26、 Esp8266进阶之路第18篇: RTOS分析 MQTT 实现过程,实现移植 MQTT协议在 esp8266 rtos实时系统,可断线重连。
<https://blog.csdn.net/xh870189248/article/details/81181707>
27、 Esp8266进阶之路第19篇: 跟紧脚步,用VisualStudio Code开发 esp8266 rtos SDK v3.0版本,全新的 idf
框架,节省内存模块化开发。 <https://blog.csdn.net/xh870189248/article/details/81382279>
28、 Esp8266进阶之路第20篇: 教你轻松自如使用cJson在乐鑫 esp8266 如何解析一段json数据以及如何生成一段json数据。
<https://blog.csdn.net/xh870189248/article/details/83149619>
29、 Esp8266进阶之路第21篇:
百万条消息免费之乐鑫esp8266使用TCP直连模式MQTT协议接入阿里云物联网平台,支持私家服务器对接支持阿里云规则引擎。
<https://blog.csdn.net/xh870189248/article/details/83149619>
30、 Esp8266进阶之路第22篇: 乐鑫esp8266 SDK编程使用 IIC总线驱动 0.96寸的OLED显示屏,显示天气预报信息。
<https://blog.csdn.net/xh870189248/article/details/83443614>
31、 Esp8266进阶之路第23篇: 当esp8266遇到
Html,该怎么内置网页控制设备,理清内置网页的实现过程,实现无需路由器手机也可以控制esp8266。
<https://blog.csdn.net/xh870189248/article/details/83543997>
32、 Esp8266进阶之路第24篇: 细聊HmacMD5的加密方法带来的安全性,并实践在esp8266上,最大保障传输的过程的信息的安全性。
<https://blog.csdn.net/xh870189248/article/details/83751704>

* 很多人怎么联系我一起学习进步,下面打个小小公告和干货无偿分享:
玩转esp8266带你飞、加群付费QQ群,提高门槛,不喜的朋友勿喷勿加:434878850
esp8266源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
<https://github.com/xuhongv/StudyInEsp8266>
esp32源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
<https://github.com/xuhongv/StudyInEsp32>

<>
文章目录

* @[toc] <https://blog.csdn.net/xh870189248/article/details/83751704#toc_49>
* 一、前言; <https://blog.csdn.net/xh870189248/article/details/83751704#_51>
* 二、`HmacMD5`在平时技术的应用;
<https://blog.csdn.net/xh870189248/article/details/83751704#HmacMD5_58>
* 三、`HmacMD5`如何使用?
<https://blog.csdn.net/xh870189248/article/details/83751704#HmacMD5_78>
* 四、`HmacMD5`在`esp8266`的实践;
<https://blog.csdn.net/xh870189248/article/details/83751704#HmacMD5esp8266_94>
* 五、其他; <https://blog.csdn.net/xh870189248/article/details/83751704#_158>

<>一、前言;

*
上个月在我们的技术讨论群里面听到有同学问我,怎么加密我们传输信息,于是乎,我答应这个月会出一篇这样的文章给大家看看。对于一些设计硬件通讯协议的安全性问题,也许会有一些解决方法和提醒,或许有好处吧!
* 因为MD5加密是不可逆的,也就是知道加密后的内容但是破解原文难度极大,不是不可能?即使跑字典的方式破解,也要跑二十几年!!
<>二、HmacMD5在平时技术的应用;

*
对于传输过程中如何加密自己的信息不被修改?如何保障协议间的安全性?其实,传输过程中自己的信息被修改可能会存在的,因为不能保证百分百是原文。但是我们可以通过
MD5校验就知道是不是原文;在许多应用中都广泛应用了MD5,打个比喻,我的服务器后端的数据库如何保存用户的密码信息?难道真的是保留原文吗?比如我的密码是
xuhong123456,难道直接是保存xuhong123456
到指定的字段吗?显然这是不正确的,存在着如果别人爬虫或者拿到了你的数据库,直接打开看不就完蛋了吗?产品经理会和你“直接打架咯!”!呵呵!

*
那么如何保留我们 的密码到数据库,即使别人看到了也看不到呢?下面是我平时设计服务器数据库的一些步骤:



* 针对上面流程图,我还有一些补充:
1:真正的密钥硬件和服务器可以约好!比如随机数,比如一个特定的数据!但是要保证这个密钥双方都是知道的!

2:在传输过程中,被抓包是正常的;但是伪造用户登陆连接服务器是另外一个问题,这个就需要一些安全性的连接了,比如https
,在客户端提交数据需要本地证书!如果您的服务器与客户端的连接问题的安全性都没弄好,那就有点什么了!

3:如果你的连接问题不是很好,任何人都可以访问!基于这个加密密钥,我建议还是灵活的,会变的,比如随机数,但是双方都是要知道怎么加密!比如我的密码是
csdnXuHoys,而我的随机数(也就是明文传输给服务器)是 56354,但是我们的加密的密钥不是56354,而是随机数加上1000,也就是57354
,或者减去100,或者更多算法!于是在传输数据时候以用户名、密码、随机数、还有加密后的信息一起发给服务器,让服务器来校验是否伪造客户端来访问!

<>三、HmacMD5如何使用?

* 比如,我的密码是xuhongvCsdn,我需要对此加密,我举最常见的两种方法加密方式:
* MD5加密后有16位和 32位,但是没有加密密钥;
* HmacMD5加密后仅仅有 32位,但是有加密密钥;
加密方式 原文 密钥 加密后的内容
MD5 xuhongvCsdn 32位= f3d38c6920c933ada0b07dec9ea8d026 16位 = 20c933ada0b07dec
HmacMD5 xuhongvCsdn xuhong123 7f1897cec734920f449b77b959871195
* 这里给大家推荐MD5在线加密网址工具:https://md5jiami.51240.com/ <https://md5jiami.51240.com/>
* 这里给大家推荐HmacMD5在线加密网址工具:http://tools.jb51.net/password/hash_encrypt
<http://tools.jb51.net/password/hash_encrypt>
<>四、HmacMD5在esp8266的实践;

* 源码的实践过程就是一些数据的算法,这里我就不多说了!我教大家怎么使用我二次封装网上的代码,再适配我们的esp8266,无偿教给大家使用哈!
//举个靶子,要加密的信息是 https://github.com/xuhongv uint8 info[30] = {
"https://github.com/xuhongv" }, output16[32], output32[32], keyOutput[32];
//md5 16位加密 DeBugLog("before encrypt info: %s ", info); XH_MD5StartDigest(info,
strlen((char *) info), XH_MD5_16, output16); DeBugLog("after encrypt Md5 %dbit:
%s ", XH_MD5_16, output16); //md5 32位加密 XH_MD5StartDigest(info, strlen((char *)
info), XH_MD5_32, output32); DeBugLog("after encrypt Md5 %dbit: %s ",
XH_MD5_32, output32); //Hmac md5加密,而且加密密码是 xuhong HMAC_XH_MD5(info,
strlen((char *) info), "xuhong", keyOutput); DeBugLog("after encrypt
HMAC_XH_MD5 : %s ", keyOutput);
* 因为在esp8266的SDK代码里面,有MD5Init()
很多的方法和网上是一样的,但是又不开源怎么使用!于是乎,我整理过的代码,我重新命名,希望不要和官方的冲突!仅仅2个方法就可以实现加密,下面是方法函数说明!
/*****************************************************************************
* 函 数 名 : XH_MD5StartDigest * 函数功能 : 开始 MD5加密 * 输入参数 : * * strContent:要加密的数据 *
iLength:要加密的数据的长度 * typeMd5: 16表示生成16位 32表示生成32位 * outBuffer:要接收的字符串 * * 返 回 值
: 无 * 备 注 : 无
*****************************************************************************/
void XH_MD5StartDigest(void const *strContent, u16 iLength, u8 typeMd5, u8
*outBuffer); /* * function: HMAC_XH_MD5 * parameter: u8 *inBuffer - 需要加密的字符串 *
u16 len - 字符串长度 * u8 *ky - 初始密钥 * u8 output[16] - 输出 */ void HMAC_XH_MD5(u8
*inBuffer, u16 len, u8 *ky, u8 *pUserOut) ;
* 看看打印:


<>五、其他;

* 本硬件代码下载:https://download.csdn.net/download/xh870189248/10765924
<https://download.csdn.net/download/xh870189248/10765924>